ukuran gambar PNG dengan benar dengan penurunan harga dengan pandoc untuk html / pdf / docx

25

Saya mencoba menggunakan markdown dengan pandoc untuk mengubah satu dokumen menjadi html, pdf, dan docx. Ini adalah dokumen yang sangat sederhana yang hanya berisi teks tanpa matematika dan beberapa gambar. Gambar-gambar tersebut dalam format PNG. Saya menyertakan gambar menggunakan ini dalam sumber penurunan harga:

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

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

</div>

dan kompilasi sebagai:

# 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

Saya perhatikan bahwa beberapa gambar PNG yang memiliki dimensi yang sama berukuran berbeda dalam format HTML dan PDF. PNG yang 250x256 px dengan resolusi rendah (72 px / in) akan muncul dalam PDF sebagai ukuran yang benar kira-kira di halaman, dan muncul dalam ukuran yang wajar dalam html, tetapi PNG yang memiliki dimensi yang sama (250x256 px) tetapi resolusi tinggi (300 px / in) diubah ukurannya menjadi kecil pada halaman dalam output PDF. Saya ingin menyimpan gambar PNG dalam ukuran yang saya tentukan dan menampilkannya dalam ukuran itu dalam format HTML / PDF / DOCX.

Saya bersedia untuk memberikan dukungan docx otomatis (atau berurusan dengan banyak format manual setelah) hanya untuk memiliki PDF / HTML.

Bagaimana saya bisa memberi tahu pandoc untuk tidak mengubah ukuran PNG untuk PDF atau gambar, dan membuatnya tampil dalam gambar yang benar? Terima kasih.

pengguna46976
sumber
2
PNG yang 300dpi tetapi hanya 250x256px seharusnya cukup kecil di halaman, bukan? (Kurang dari satu inci persegi.) PNG dengan dpi lebih rendah akan lebih besar pada halaman. Pandoc memperhitungkan informasi dpi akun, serta ukuran piksel, dalam menentukan ukuran gambar. Dan bukankah begitu? Mungkin Anda bisa menggunakan CSS untuk secara global menurunkan gambar beresolusi tinggi dalam HTML.
John MacFarlane
1
@JohnMacFarlane: Saya melihat bahwa perilaku pandoc benar dalam memperhitungkan dpi - tetapi saya ingin mengabaikan dpi dan tetap dengan ukuran absolut, sehingga saya dapat menyimpan PNG beresolusi tinggi tunggal untuk semua gambar. Apakah cara yang benar untuk melakukan ini untuk membuat versi resolusi gambar yang lebih rendah, atau adakah cara untuk membuat pandoc hanya menggunakan dimensi gambar dan mengabaikan resolusi? Itu akan menjadi yang paling sederhana dari saya
user46976

Jawaban:

17

Dimensi dikonversi ke piksel untuk output dalam format seperti HTML. Gunakan opsi --dpi untuk menentukan jumlah piksel per inci. Standarnya adalah 96dpi.

Temukan elemen yang paling umum dalam gambar Anda dan gunakan itu. Hanya modifikasi pengecualian.


Contoh: dpi, lebar, tinggi.

Jika Anda memberikan informasi dpi:

Tambahkan opsi --dpi seperti yang dinyatakan untuk mengabaikan default.


Jika sebagian besar gambar Anda memiliki tinggi atau lebar yang sama, itu harus mudah diperbaiki.

Misalnya, Anda mengubah baris menjadi:

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

atau

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

Atau lakukan ini dalam markup HTML lurus:

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

atau

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

dan rasionya akan benar.


Referensi: Pandoc Readme

Untuk HTML dan EPUB, semua atribut kecuali lebar dan tinggi (tetapi termasuk srcset dan ukuran) diteruskan apa adanya. Penulis lain mengabaikan atribut yang tidak didukung oleh format output mereka.

Atribut lebar dan tinggi pada gambar diperlakukan secara khusus. Ketika digunakan tanpa unit, unit diasumsikan piksel. Namun, salah satu dari pengidentifikasi unit berikut dapat digunakan: px, cm, mm, in, inch, dan%.

Dimensi dikonversi ke inci untuk keluaran dalam format berbasis halaman seperti LaTeX. Dimensi dikonversi ke piksel untuk output dalam format seperti HTML. Gunakan opsi --dpi untuk menentukan jumlah piksel per inci. Standarnya adalah 96dpi.

% Unit umumnya relatif terhadap beberapa ruang yang tersedia. Misalnya contoh di atas akan dirender ke <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).

Beberapa format output memiliki gagasan tentang kelas (ConTeXt) atau pengidentifikasi unik (LaTeX \ caption), atau keduanya (HTML).

Ketika tidak ada atribut lebar atau tinggi yang ditentukan, fallback adalah untuk melihat resolusi gambar dan metadata dpi yang tertanam dalam file gambar.

BloodyEl
sumber
4
Satu juga dapat digunakan { width=100% }untuk lebar relatif ke ukuran layar / halaman / linewidth keseluruhan.
rriemann
Bisakah ini digunakan dengan sintaks pandoc-crossrefs {#fig:refname}?
oarfish
1
Menjawab komentar saya sendiri: {#fig:refname width=50%}berfungsi.
oarfish