Question Dimensionnement correct des images PNG en démarquage avec pandoc pour html / pdf / docx


J'essaie d'utiliser markdown avec pandoc pour convertir un document unique en html, pdf et docx. C'est un document extrêmement simple contenant uniquement du texte sans maths et quelques images. Les images sont au format PNG. J'inclus une image en utilisant cette source de démarque:

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

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

</div>

et compiler comme:

# 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

J'ai remarqué que certaines images PNG qui ont les mêmes dimensions obtenir une taille différente dans les formats HTML et PDF. Un format PNG de 250x256 px avec une faible résolution (72 px / in) apparaîtra au format PDF comme étant la taille correcte à peu près sur la page et apparaîtra dans une taille raisonnable au format html, mais un format PNG ayant les mêmes dimensions (250x256 px) la haute résolution (300 px / in) est redimensionnée pour être minuscule sur la page dans la sortie PDF. Je souhaite conserver un ensemble d'images PNG d'une taille que je spécifie et les faire apparaître dans cette taille dans les formats HTML / PDF / DOCX.

Je suis prêt à abandonner le support docx automatique (ou à gérer beaucoup de formatage manuel) juste pour avoir PDF / HTML.

Comment puis-je dire à pandoc de ne pas redimensionner les fichiers PNG pour les fichiers PDF ou les images, et de les afficher dans leurs images correctes? Merci.


11
2017-08-13 18:02


origine


Un format PNG de 300dpi mais seulement 250x256px devrait être assez petit sur la page, n'est-ce pas? (Moins d'un pouce carré.) Un PNG avec un dpi inférieur sera plus grand sur la page. Pandoc prend en compte les informations de résolution, ainsi que la taille des pixels, pour dimensionner les images. Et ne devrait pas ça? Vous pourriez peut-être utiliser CSS pour réduire globalement les images haute résolution en HTML. - John MacFarlane
@JohnMacFarlane: Je vois que le comportement du pandoc est correct en ce qui concerne la prise en compte des dpi - mais je veux qu'il ignore les dpi et respecte les tailles absolues, afin de pouvoir conserver un seul PNG haute résolution pour toutes les images. Est-ce que la bonne façon de faire est de rendre la version des images de résolution inférieure, ou existe-t-il un moyen de faire en sorte que pandoc n'utilise que les dimensions de l'image et ignore la résolution? Ce serait le plus simple de ma part - user46976


Réponses:


Les dimensions sont converties en pixels pour une sortie au format HTML. Utilisez l'option --dpi pour spécifier le nombre de pixels par pouce. La valeur par défaut est 96dpi.

Trouvez l'élément le plus commun dans vos images et utilisez-le. Ne modifiez que les exceptions.


Exemples: dpi, largeur, hauteur.

Si vous lui donnez les informations dpi:

Ajoutez l'option --dpi comme indiqué pour remplacer la valeur par défaut.


Si la plupart de vos images ont une hauteur ou une largeur commune, cela devrait être facilement corrigé.

Par exemple, vous avez changé la ligne pour:

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

ou

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

Ou faites cela en balisage HTML:

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

ou

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

et le ratio sera correct.


Référence: Readme de Pandoc

Pour HTML et EPUB, tous les attributs, à l'exception de width et height (y compris srcset et tailles), sont transmis tels quels. Les autres auteurs ignorent les attributs qui ne sont pas pris en charge par leur format de sortie.

Les attributs width et height des images sont traités spécialement. Lorsqu'elle est utilisée sans unité, l'unité est supposée être des pixels. Cependant, l'un des identificateurs d'unité suivants peut être utilisé: px, cm, mm, in, inch et%.

Les dimensions sont converties en pouces pour une sortie dans des formats basés sur des pages comme LaTeX. Les dimensions sont converties en pixels pour une sortie au format HTML. Utilisez l'option --dpi pour spécifier le nombre de pixels par pouce. La valeur par défaut est 96dpi.

L'unité% est généralement relative à un espace disponible. Par exemple, l'exemple ci-dessus rendra à <img href="file.jpg" style="width: 50%;" /> (HTML), \includegraphics[width=0.5\textwidth]{file.jpg} (LaTeX), or \externalfigure[file.jpg][width=0.5\textwidth] (Le contexte).

Certains formats de sortie ont une notion de classe (ConTeXt) ou un identifiant unique (LaTeX \ caption), ou les deux (HTML).

Lorsqu'aucun attribut de largeur ou de hauteur n'est spécifié, le repli consiste à examiner la résolution de l'image et les métadonnées dpi intégrées dans le fichier image.


4
2018-06-04 09:28



On peut aussi utiliser { width=100% } pour les largeurs relatives à la taille globale de l'écran / page / largeur de ligne. - rriemann