2017-12-01 4 views
2

Ich versuche mit xsl: fo zu arbeiten, um PDF zu erstellen. Ich habe Probleme mit Inline-Elementen. Ich muss Zeile mit einem fettem Wort schreiben. Zum Beispiel:XSL: FO Inline und hübschen Druck

Ich brauche diese fett zu sein.

ich tun konnte, dass mit diesem Code:

<fo:block> 
    <fo:inline>I need </fo:inline><fo:inline font-weight="bold">this</fo:inline><fo:inline> to be bold</fo:inline> 
</fo:block> 

Aber da ich die xml programmaticaly schreiben, wird es ziemlich gedruckt (i deaktivieren können, aber dann wäre es auf einer Linie sein, und dass lesbar ist nicht menschlich

Es funktioniert nicht, wenn wie folgt formatiert:.

<fo:block> 
    <fo:inline>I need </fo:inline> 
    <fo:inline font-weight="bold">this</fo:inline> 
    <fo:inline> to be bold</fo:inline> 
</fo:block> 

Es macht große horizontale Räume zwischen den Texten wenn PDF erzeugt wird.

Haben Sie eine Idee, wie dies funktioniert? Danke vielmals.

+0

Es könnte etwas falsch mit dir recht-Formatierer, weil normale Dinge wie Zeilenumbrüche innerhalb Text gemischt mit Tags respektieren sollte – Andremoniy

+0

oh, es tut mir leid, das erste Beispiel ist falsch. Es wurde nicht verschachtelt. – Gobanit

Antwort

3

Ich stimme mit @Andremonly überein.

Überprüfen Sie, dass Sie white-space-collapse="false" (siehe https://www.w3.org/TR/xsl11/#white-space-collapse) nicht auf einem Vorgänger FO setzen.

Es gibt zusätzliche Eigenschaften, die sich auf die Verarbeitung von Leerraum auswirken. Welche passt zu dem, was du siehst?

<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> 
<fo:layout-master-set> 
    <fo:simple-page-master master-name="page" 
    margin="0.1in" page-height="4in" page-width="3in"> 
    <fo:region-body region-name="body" margin="6pt"/> 
    </fo:simple-page-master> 
</fo:layout-master-set> 
<fo:page-sequence master-reference="page"> 
    <fo:flow flow-name="body"> 
    <fo:block> 
    <fo:inline>I need </fo:inline> 
    <fo:inline font-weight="bold">this</fo:inline> 
    <fo:inline> to be bold</fo:inline> 
    </fo:block> 
    <fo:block white-space-collapse="false"> 
    <fo:inline>I need </fo:inline> 
    <fo:inline font-weight="bold">this</fo:inline> 
    <fo:inline> to be bold</fo:inline> 
    </fo:block> 
    <fo:block white-space-treatment="preserve"> 
    <fo:inline>I need </fo:inline> 
    <fo:inline font-weight="bold">this</fo:inline> 
    <fo:inline> to be bold</fo:inline> 
    </fo:block> 
    <fo:block white-space-treatment="preserve" white-space-collapse="false"> 
    <fo:inline>I need </fo:inline> 
    <fo:inline font-weight="bold">this</fo:inline> 
    <fo:inline> to be bold</fo:inline> 
    </fo:block> 
    <fo:block linefeed-treatment="preserve"> 
    <fo:inline>I need </fo:inline> 
    <fo:inline font-weight="bold">this</fo:inline> 
    <fo:inline> to be bold</fo:inline> 
    </fo:block> 
    <fo:block white-space-collapse="false" linefeed-treatment="preserve"> 
    <fo:inline>I need </fo:inline> 
    <fo:inline font-weight="bold">this</fo:inline> 
    <fo:inline> to be bold</fo:inline> 
    </fo:block> 
    <fo:block white-space-treatment="preserve" linefeed-treatment="preserve"> 
    <fo:inline>I need </fo:inline> 
    <fo:inline font-weight="bold">this</fo:inline> 
    <fo:inline> to be bold</fo:inline> 
    </fo:block> 
    <fo:block white-space-treatment="preserve" white-space-collapse="false" linefeed-treatment="preserve"> 
    <fo:inline>I need </fo:inline> 
    <fo:inline font-weight="bold">this</fo:inline> 
    <fo:inline> to be bold</fo:inline> 
    </fo:block> 
    </fo:flow> 
</fo:page-sequence> 
</fo:root> 
+0

Ich sehe den zweiten. Die Linie startet in Ordnung, aber vor und nach "diesem" gibt es horizontale Zwischenräume. – Gobanit

+1

Also, wie gesagt, suchen Sie nach "white-space-collapse =" false "' auf einem Vorfahren FO. –

+0

Ja, scheint das ist es :) Danke – Gobanit