XSL-FO problema Dimensione immagine con i PDF
-
27-09-2019 - |
Domanda
Ho un gran numero di documenti XML che vengono creati in DocBook e, attraverso Maven, sono pubblicati sia in un formato HTML e un modulo PDF. Le generazioni funziona bene, e il codice html guarda bene. Il problema che sto avendo è la dimensione delle immagini nella versione in pdf. Le immagini sono una raccolta di screenshot, alcuni sono a schermo intero, un po 'di circa 2 / 3rds larghezza e l'altezza, e altri sono piccole caselle di ricerca. E 'ovvio che ho bisogno di fare una massiccia refactoring degli attributi del imagedata. Mi chiedevo cosa avrei dovuto refactoring a? Sto cercando un modo per creare fino a 4 'tipi' di immagini e per questi di far valere la propria dimensionamento. Un esempio di un aspetto di immagine in questo modo:
<section><title>Screenshot</title>
<mediaobject>
<imageobject>
<imagedata fileref="./views/screenshots/editNote.png" scalefit="0" width="100%"/>
</imageobject>
</mediaobject>
</section>
E funziona solo per alcune delle mie dimensioni screenshot.
ho giocato in giro con scalefit, la larghezza e contentWidth / contentHeight e sembrano risolvere diverse porzioni del problema. Dovrei essere alla ricerca in finestre come bene?
. NOTA: Non c'è paura di rompere la generazione di HTML dato che posso accendere 'escludere proprietà' nel XSL
Soluzione
Devi provare @scalefit="0"
con @scalefit="1"
:
<section><title>Screenshot</title>
<mediaobject>
<imageobject>
<imagedata fileref="./views/screenshots/editNote.png"
scalefit="1" width="100%" contentdept="100%"/>
</imageobject>
</mediaobject>
</section>
Ecco alcune linee guida per l'utilizzo del attributi di scala.
Per scalare una grafica ad una data larghezza, impostare il contentWidth nel imagedata elemento a tale dimensione, ad esempio contentWidth = "8,5 centimetri". Se si specifica un numero senza unità, si assume che essere pixel.
Per scalare un grafico per adattare la disponibile larghezza sulla stampa, uso width = "100%" e scalefit = "1" attributi. Per il testo rientrato, come in un lista, la larghezza disponibile è dal corrente rientro al margine destro.
Per mantenere un grafico per l'output stampato nella sua dimensione naturale, a meno che non sia troppo grande per adattarsi alla larghezza disponibile, in qual caso termoretraibile che si adatti, uso scalefit = "1", width = "100%", e contentdepth = "100%" attributi.
...
- Alcuni processori XSL-FO non supportano tutti questi attributi. Potresti aver bisogno sperimentare per vedere che cosa funziona. Per esempio, la versione FOP 0.20.5 ossequi larghezza come se fosse contentWidth e ignora una vera contentWidth attributo.
Altri suggerimenti
Questo non è strettamente quello che stai chiedendo, ma avete normalizzato le impostazioni DPI nei file di immagine? Anche se ignorato in HTML rendering, sono cruciali in docbook-> il rendering PDF.
Quando ho avuto a che fare con questo in passato, che fissa il DPI mi ha lasciato senza la necessità di ulteriori Tweak sorgente DocBook.