XSL-FO question de la taille de l'image avec pdfs
-
27-09-2019 - |
Question
J'ai un grand nombre de documents XML qui sont créés dans DocBook et, par Maven, sont publiés en un html et une forme de pdf. Les générations fonctionne très bien, et le code html semble bien. La question que je vais avoir est la taille des images dans la version pdf. Les images sont une collection de captures d'écran, certains sont en plein écran, un peu à environ 2 / 3rds largeur et la hauteur, et d'autres sont des petites boîtes de recherche. Il est évident que je dois faire une refactor massive des attributs de la imageData. Je me demandais ce que dois-je factoriser à? Je cherche un moyen de créer jusqu'à 4 types « » d'images et pour ceux-ci de faire respecter leur propre taille. Un exemple d'une apparence d'image comme ceci:
<section><title>Screenshot</title>
<mediaobject>
<imageobject>
<imagedata fileref="./views/screenshots/editNote.png" scalefit="0" width="100%"/>
</imageobject>
</mediaobject>
</section>
Et il ne fonctionne que pour certains de mes tailles de capture d'écran.
Je l'ai joué avec scalefit, la largeur et contentWidth / contentHeight et ils semblent résoudre différentes parties du problème. Dois-je être à la recherche dans viewports aussi bien?
NOTE:. Il n'y a pas peur de briser la génération html depuis que je peux activer « exclure des propriétés » dans le XSL
La solution
Vous avez essayer @scalefit="0"
avec @scalefit="1"
:
<section><title>Screenshot</title>
<mediaobject>
<imageobject>
<imagedata fileref="./views/screenshots/editNote.png"
scalefit="1" width="100%" contentdept="100%"/>
</imageobject>
</mediaobject>
</section>
Voici quelques conseils pour l'utilisation de la attributs de mise à l'échelle.
Pour l'échelle d'un graphique à une largeur donnée, régler le contentWidth dans le imagedata élément de cette taille, par exemple contentWidth = "8.5cm". Si vous spécifiez un nombre sans unités, il est supposé être pixels.
Pour redimensionner une image pour adapter la largeur disponible dans la sortie imprimée, l'utilisation width = "100%" et scalefit = "1" les attributs. Le texte indenté comme dans un liste, la largeur disponible est de la tiret actuel à la marge de droite.
Pour conserver une image pour la sortie imprimée à sa taille naturelle, à moins qu'il ne soit trop grand pour adapter à la largeur disponible, en auquel cas rétractable pour l'adapter, à l'utilisation scalefit = "1", width = "100%", et contentdepth = "100%" attributs.
...
- Certains processeurs XSL-FO ne prennent pas en charge tous ces attributs. Tu pourrais avoir besoin de d'expérimenter pour voir ce qui fonctionne. Pour exemple, la version FOP 0.20.5 traite largeur comme si elle était contentWidth et Ignore tout contentWidth réel attribut.
Autres conseils
Ce n'est pas strictement ce que vous demandez, mais avez-vous normalisé les paramètres DPI dans vos fichiers d'image? Bien ignoré en HTML rendu, ils sont essentiels dans docbook-> rendu PDF.
Quand j'ai eu affaire dans le passé, la fixation du DPI m'a laissé sans besoin de modifier davantage la source DocBook.