правильно розмір зображень у форматі PNG у розмітці з pandoc для html / pdf / docx


25

Я намагаюся використовувати розмітку з 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 пікселів з низькою роздільною здатністю (72 пікс / дюйм) відображатиметься в PDF як правильний розмір приблизно на сторінці і відображатиметься у розумному розмірі в html, але PNG, що має ті ж розміри (250x256 px), але є з високою роздільною здатністю (300 пікс / дюйм) можна змінити розмір, щоб бути мініатюрним на сторінці у вихідному документі PDF. Я хочу зберегти набір зображень PNG у розмірі, який я вказав, і щоб вони відображалися у такому розмірі в обох форматах HTML / PDF / DOCX.

Я готовий відмовитись від автоматичної підтримки docx (або вирішити багато ручного форматування після) лише для того, щоб мати PDF / HTML.

Як я можу сказати Pandoc не змінювати розмір PNG-файлів для PDF або зображення, і вони відображаються на правильних зображеннях? Спасибі.


2
PNG, що має 300dpi, але лише 250x256px, має бути зовсім маленьким на сторінці, чи не так? (Менше одного дюйма в квадраті.) PNG з нижчим точком на дюйм буде більшим на сторінці. Pandoc враховує розміри зображень у форматі dpi, а також розмір пікселів. І чи не так? Можливо, ви можете використовувати CSS для глобального масштабування зображень з високою роздільною здатністю в HTML.
Джон Макфарлейн

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, in%.

Розміри перетворюються в дюйми для виведення у формат на основі сторінок, як 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% }відносні ширини до загального розміру екрана / сторінки / рядків.
rriemann

Чи можна це використовувати з синтаксисом pandoc-crossrefs {#fig:refname}?
морська риба

2
Відповідаючи на власний коментар: {#fig:refname width=50%}працює.
морська риба
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.