html / pdf / docx için PNG görüntülerini pandoc ile doğru şekilde boyutlandırma


25

Html, pdf ve docx içine tek bir belge dönüştürmek için pandoc ile markdown kullanmaya çalışıyorum. Yalnızca matematik içermeyen metin ve birkaç resim içeren son derece basit bir belgedir. Görüntüler PNG biçimindedir. Markdown kaynağında bunu kullanarak bir görüntü dahil:

<div style="float:center" markdown="1">

![my caption](./figures/myimage.png)

</div>

ve şöyle derleyin:

# html
pandoc myarticle.md -c mystyle.css -o myarticle.html
# pdf
pandoc myarticle.md -V geometry:margin=1in -o myarticle.pdf
# docx
pandoc myarticle.md -o myarticle.docx

Aynı boyutlara sahip bazı PNG görüntülerinin HTML ve PDF formatlarında farklı boyutlarda olduğunu fark ettim . Düşük çözünürlüklü (72 piksel / inç) 250x256 piksel boyutunda bir PNG, PDF'de kabaca sayfada doğru boyutta görünür ve html cinsinden makul bir boyutta görünür, ancak aynı boyutlara (250x256 piksel) sahip bir PNG görünür. yüksek çözünürlüklü (300 piksel / inç) PDF çıktısındaki sayfada küçültülecek şekilde yeniden boyutlandırılır. PNG görüntülerini belirlediğim bir boyutta tutmak ve hem HTML / PDF / DOCX formatlarında bu boyutta görünmelerini istiyorum.

Sadece PDF / HTML için otomatik docx desteğinden vazgeçmeye (veya daha sonra manuel biçimlendirme ile uğraşmaya) hazırım.

Pandoc'a PDF veya resim için PNG'leri yeniden boyutlandırmamasını ve doğru resimlerinde görünmelerini nasıl söyleyebilirim? Teşekkürler.


2
300 dpi , ancak yalnızca 250x256 piksel boyutunda bir PNG sayfada oldukça küçük olmalı, değil mi? (Bir inç kareden daha az.) Daha düşük dpi değerine sahip bir PNG sayfada daha büyük olacaktır. Pandoc, görüntüleri boyutlandırırken piksel boyutunun yanı sıra dpi bilgilerini de dikkate alır. Ve değil mi? Belki de HTML'deki yüksek çözünürlüklü görüntüleri global olarak küçültmek için CSS kullanabilirsiniz.
John MacFarlane

1
@JohnMacFarlane: dpi'yi dikkate alırken pandoc'un davranışının doğru olduğunu görüyorum - ancak dpi'yi görmezden gelmesini ve mutlak boyutlarla yapışmasını istiyorum, böylece tüm görüntüler için tek bir yüksek çözünürlüklü PNG tutabiliyorum. Görüntülerin daha düşük çözünürlüklü bir sürümünü yapmak için bunu yapmanın doğru yolu mu, yoksa pandoc'un sadece görüntünün boyutlarını kullanmasının ve çözünürlüğü görmezden gelmenin bir yolu var mı? Bu benim
sonumdan

Yanıtlar:


17

Boyutlar, HTML benzeri biçimlerde çıktı almak için piksele dönüştürülür. İnç başına piksel sayısını belirtmek için --dpi seçeneğini kullanın. Varsayılan 96 dpi'dir.

Fotoğraflarınızdaki en yaygın öğeyi bulun ve kullanın. Yalnızca istisnaları değiştirin.


Örnekler: dpi, genişlik, yükseklik.

Eğer dpi bilgisini verirseniz:

Varsayılanı geçersiz kılmak için --dpi seçeneğini belirtildiği gibi ekleyin.


Resimlerinizin çoğunun ortak bir yüksekliği veya genişliği varsa, kolayca düzeltilmesi gerekir.

Örneğin, satırı şu şekilde değiştirdiniz:

![my caption](./figures/myimage.png){ width=250px }

veya

![my caption](./figures/myimage.png){ height=256px }

Veya bunu düz HTML biçimlendirmesinde yapın:

<img src="./figures/myimage.png" alt="my caption" style="width: 250px;"/>

veya

<img src="./figures/myimage.png" alt="my caption" style="height: 256px;"/>

ve oran doğru olacaktır.


Referans: Pandoc Benioku

HTML ve EPUB için, genişlik ve yükseklik dışındaki tüm özellikler (ancak srcset ve boyutlar dahil) olduğu gibi iletilir. Diğer yazarlar çıktı biçimleri tarafından desteklenmeyen nitelikleri yok sayarlar.

Görüntülerdeki genişlik ve yükseklik nitelikleri özel olarak ele alınır. Birim olmadan kullanıldığında, birimin piksel olduğu varsayılır. Ancak, aşağıdaki birim tanımlayıcılarından herhangi biri kullanılabilir: px, cm, mm, inç, inç ve%.

Boyutlar, LaTeX gibi sayfa tabanlı formatlarda çıktı almak için inç'e dönüştürülür. Boyutlar, HTML benzeri biçimlerde çıktı almak için piksele dönüştürülür. İnç başına piksel sayısını belirtmek için --dpi seçeneğini kullanın. Varsayılan 96 dpi'dir.

% Birimi genellikle kullanılabilir boşluğa göredir. Örneğin, yukarıdaki örnek <img href="file.jpg" style="width: 50%;" />(HTML), \includegraphics[width=0.5\textwidth]{file.jpg} (LaTeX), or \externalfigure[file.jpg][width=0.5\textwidth](ConTeXt) biçiminde oluşturulur.

Bazı çıktı biçimleri bir sınıf (ConTeXt) veya benzersiz bir tanımlayıcıya (LaTeX \ caption) veya her ikisine (HTML) sahiptir.

Herhangi bir genişlik veya yükseklik özelliği belirtilmediğinde, geri dönüş görüntü çözünürlüğüne ve görüntü dosyasına gömülü olan dpi meta verilerine bakmaktır.


5
Ayrıca { width=100% }, genel ekran / sayfa / çizgi genişliği boyutuna göreli genişlikler için de kullanılabilir .
rriemann

Bu pandoc-crossrefs {#fig:refname}sözdizimiyle kullanılabilir mi?
18'de oarfish

2
Kendi yorumumu cevaplıyorum: {#fig:refname width=50%}çalışıyor.
oarfish
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.