правильный размер изображений PNG в уценке с помощью pandoc для html / pdf / docx

11229
user46976

Я пытаюсь использовать разметку с 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 пикселей на дюйм) изменяются, чтобы быть крошечными на странице в выводе PDF. Я хочу сохранить набор изображений PNG в указанном мной размере, чтобы они отображались в этом размере в обоих форматах HTML / PDF / DOCX.

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

Как я могу сказать Pandoc не изменять размеры PNG для PDF или изображений и отображать их в правильных изображениях? Благодарю.

13
PNG с разрешением 300 точек на дюйм, но только 250x256 пикселей * должен * быть достаточно маленьким на странице, не так ли? (Менее одного дюйма квадрата.) PNG с меньшим разрешением на дюйм будет больше на странице. Pandoc учитывает информацию о точках на дюйм, а также размер пикселя при определении размера изображений. И не должно ли это? Возможно, вы могли бы использовать CSS для глобального уменьшения изображений с высоким разрешением в HTML. John MacFarlane 9 лет назад 0
@JohnMacFarlane: Я вижу, что поведение pandoc правильно с учетом dpi, но я хочу, чтобы оно игнорировало dpi и придерживалось абсолютных размеров, чтобы я мог сохранить один PNG с высоким разрешением для всех изображений. Правильный ли это способ сделать версию изображений с более низким разрешением, или же есть способ заставить pandoc просто использовать размеры изображения и игнорировать разрешение? Это было бы проще всего с моей стороны user46976 9 лет назад 0

1 ответ на вопрос

5
BloodyEl

Dimensions are converted to pixels for output in HTML-like formats. Use the --dpi option to specify the number of pixels per inch. The default is 96dpi.

Find the most common element in your pictures and use that. Only modify the exceptions.


Examples: dpi, width, height.

If you give it the dpi information:

Add the --dpi option as stated to override the default.


If most of your pictures have a common height or width, that should be easily corrected.

For example, you changed the line to:

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

or

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

Or do this in straight HTML markup:

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

or

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

and the ratio will be correct.


Reference: Pandoc Readme

For HTML and EPUB, all attributes except width and height (but including srcset and sizes) are passed through as is. The other writers ignore attributes that are not supported by their output format.

The width and height attributes on images are treated specially. When used without a unit, the unit is assumed to be pixels. However, any of the following unit identifiers can be used: px, cm, mm, in, inch and %.

Dimensions are converted to inches for output in page-based formats like LaTeX. Dimensions are converted to pixels for output in HTML-like formats. Use the --dpi option to specify the number of pixels per inch. The default is 96dpi.

The % unit is generally relative to some available space. For example the above example will render to <img href="file.jpg" style="width: 50%;" /> (HTML), \includegraphics[width=0.5\textwidth] (LaTeX), or \externalfigure[file.jpg][width=0.5\textwidth] (ConTeXt).

Some output formats have a notion of a class (ConTeXt) or a unique identifier (LaTeX \caption), or both (HTML).

When no width or height attributes are specified, the fallback is to look at the image resolution and the dpi metadata embedded in the image file.

Можно также использовать `` для относительной ширины к общему размеру экрана / страницы / ширины линии. rriemann 6 лет назад 0
Можно ли это использовать с синтаксисом `{#fig: refname}` `pandoc-crossref`s? oarfish 5 лет назад 0
Отвечая на мой собственный комментарий: `{#fig: refname width = 50%}` работает. oarfish 5 лет назад 0

Похожие вопросы