การปรับขนาดภาพ PNG อย่างถูกต้องด้วยเครื่องหมาย pandoc สำหรับ html / pdf / docx


25

ฉันกำลังพยายามใช้ markdown ด้วย pandoc เพื่อแปลงเอกสารเดียวเป็น html, pdf และ docx มันเป็นเอกสารที่ง่ายมากที่ประกอบด้วยข้อความที่ไม่ใช้คณิตศาสตร์และรูปภาพเพียงไม่กี่ภาพ รูปภาพอยู่ในรูปแบบ PNG ฉันรวมภาพโดยใช้สิ่งนี้ในแหล่งที่มามาร์คดาวน์:

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

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

</div>

และรวบรวมเป็น:

# 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

ฉันสังเกตเห็นว่ารูปภาพ PNG บางภาพที่มีขนาดเท่ากันมีขนาดแตกต่างกันในรูปแบบ HTML และ PDF PNG ที่มีขนาด 250x256 px ที่มีความละเอียดต่ำ (72 px / in) จะปรากฏใน PDF เป็นขนาดที่ถูกต้องบนหน้าเว็บและปรากฏในขนาดที่เหมาะสมใน html แต่ PNG ที่มีขนาดเท่ากัน (250x256 px) แต่เป็น ความละเอียดสูง (300 px / in) ได้รับการปรับขนาดให้เล็กบนหน้าในเอาต์พุต PDF ฉันต้องการเก็บชุด PNG ภาพในขนาดที่ฉันระบุและให้ปรากฏในขนาดนั้นทั้งในรูปแบบ HTML / PDF / DOCX

ฉันยินดีที่จะยกเลิกการสนับสนุน docx อัตโนมัติ (หรือจัดการกับการจัดรูปแบบด้วยตนเองหลังจากนั้น) เพียงแค่มี PDF / HTML

ฉันจะบอกให้ pandoc ไม่ปรับขนาด PNG สำหรับ PDF หรือรูปภาพได้อย่างไรและให้ pandoc ปรากฏในรูปภาพที่ถูกต้อง ขอขอบคุณ


2
PNG ที่ขนาด 300dpi แต่มีเพียง 250x256px ที่ควรจะมีขนาดค่อนข้างเล็กในหน้าใช่ไหม (น้อยกว่าหนึ่งตารางนิ้ว) PNG ที่มี dpi ต่ำกว่าจะใหญ่ขึ้นในหน้า Pandoc คำนึงถึงข้อมูล dpi เช่นเดียวกับขนาดพิกเซลในการปรับขนาดภาพ และไม่ควร? บางทีคุณอาจใช้ CSS เพื่อลดขนาดรูปภาพความละเอียดสูงในระดับ HTML
John MacFarlane

1
@JohnMacFarlane: ฉันเห็นว่าพฤติกรรมของ pandoc นั้นถูกต้องในการพิจารณา dpi - แต่ฉันต้องการให้ละเว้น dpi และยึดด้วยขนาดที่แน่นอนเพื่อให้ฉันสามารถเก็บ PNG ความละเอียดสูงเดียวสำหรับภาพทั้งหมดได้ วิธีที่ถูกต้องในการทำเช่นนี้เพื่อลดความละเอียดของภาพลงหรือมีวิธีการทำแพนโดกเพียงแค่ใช้มิติของภาพและไม่สนใจความละเอียดเท่านั้น? นั่นจะง่ายที่สุดจากฉันปลาย
user46976

คำตอบ:


17

ส่วนข้อมูลจะถูกแปลงเป็นพิกเซลสำหรับผลลัพธ์ในรูปแบบ HTML ใช้ตัวเลือก --dpi เพื่อระบุจำนวนพิกเซลต่อนิ้ว ค่าเริ่มต้นคือ 96dpi

ค้นหาองค์ประกอบที่พบบ่อยที่สุดในรูปภาพของคุณและใช้สิ่งนั้น แก้ไขข้อยกเว้นเท่านั้น


ตัวอย่าง: dpi, ความกว้าง, ความสูง

หากคุณให้ข้อมูล dpi:

เพิ่มตัวเลือก --dpi ตามที่ระบุไว้เพื่อแทนที่ค่าเริ่มต้น


หากรูปภาพส่วนใหญ่มีความสูงหรือความกว้างร่วมกันควรแก้ไขให้ถูกต้อง

ตัวอย่างเช่นคุณเปลี่ยนสายเป็น:

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

หรือ

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

หรือทำสิ่งนี้ในมาร์กอัป HTML แบบตรง:

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

หรือ

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

และอัตราส่วนจะถูกต้อง


การอ้างอิง: Pandoc Readme

สำหรับ HTML และ EPUB แอ็ตทริบิวต์ทั้งหมดยกเว้นความกว้างและความสูง (แต่รวมถึง srcset และขนาด) จะถูกส่งผ่านตามที่เป็นอยู่ นักเขียนคนอื่นไม่สนใจคุณลักษณะที่ไม่ได้รับการสนับสนุนจากรูปแบบเอาต์พุต

คุณสมบัติความกว้างและความสูงของภาพได้รับการปฏิบัติเป็นพิเศษ เมื่อใช้โดยไม่มีหน่วยหน่วยจะถือว่าเป็นพิกเซล อย่างไรก็ตามสามารถใช้ตัวระบุหน่วยใด ๆ ต่อไปนี้: px, cm, mm, in, inch และ%

ขนาดจะถูกแปลงเป็นนิ้วสำหรับผลลัพธ์ในรูปแบบหน้าเช่น LaTeX ส่วนข้อมูลจะถูกแปลงเป็นพิกเซลสำหรับผลลัพธ์ในรูปแบบ HTML ใช้ตัวเลือก --dpi เพื่อระบุจำนวนพิกเซลต่อนิ้ว ค่าเริ่มต้นคือ 96dpi

โดยทั่วไปหน่วย% จะสัมพันธ์กับพื้นที่ว่างที่มีอยู่บางส่วน ตัวอย่างเช่นตัวอย่างด้านบนจะแสดงเป็น<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)

บางรูปแบบผลลัพธ์มีความคิดของคลาส (ConTeXt) หรือตัวระบุเฉพาะ (LaTeX \ caption) หรือทั้งสองอย่าง (HTML)

เมื่อไม่ได้ระบุแอตทริบิวต์ความกว้างหรือความสูงทางเลือกคือการดูความละเอียดของภาพและข้อมูลเมตา dpi ฝังอยู่ในไฟล์ภาพ


5
หนึ่งสามารถใช้{ width=100% }สำหรับความกว้างสัมพัทธ์กับขนาดหน้าจอ / หน้า / linewidth โดยรวม
rriemann

สามารถใช้กับไวยากรณ์pandoc-crossrefs ได้{#fig:refname}หรือไม่
oarfish

2
ตอบความคิดเห็นของตัวเอง: {#fig:refname width=50%}ทำงาน
oarfish
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.