2016-11-15 3 views
1

Ich benutze Apache Fop (2.1) um RTF-Dokumente aus XML zu generieren. Ich möchte, dass die erste Seite eine andere Überschrift hat als die anderen Seiten. Ich habe zwei einfache Seitenmaster eingerichtet, einen für die erste Seite und einen für die anderen Seiten. Ich stoße auf ein Problem, wenn ich "zuerst" zur Seitenposition komme. Es wird nie dort:xsl fo findet keine Seitenposition "first"

<fo:page-sequence-master master-name="my-sequence"> 
     <fo:repeatable-page-master-alternatives> 
      <fo:conditional-page-master-reference page-position="first" master-reference="firstPage"/> 
      <fo:conditional-page-master-reference page-position="rest" master-reference="otherPage"/> 
     </fo:repeatable-page-master-alternatives> 
    </fo:page-sequence-master> 

Es wird immer auf die Seite-position = „Rest“, auch für die erste Seite des Dokuments. Kann mir jemand sagen warum? Wie kann ich das lösen?

Geck tut mir diesen Fehler geben:

Only simple-page-masters are supported on page-sequences. Using default simple-page-master from page-sequence-master "my-sequence" 

Hier ist der Rest meines Xslt:

<fo:layout-master-set> 
    <fo:simple-page-master master-name="firstPage" 
     page-height="11in" page-width="8.5in" 
     margin-top=".5in" margin-left="1in" margin-right="1in" margin-bottom=".5in"> 

     <fo:region-body /> 
     <fo:region-before region-name="firstPageBefore"/> 
    </fo:simple-page-master> 

    <fo:simple-page-master master-name="otherPage" 
     page-height="11in" page-width="8.5in" 
     margin-top=".5in" margin-left="1in" margin-right="1in" margin-bottom=".5in"> 

     <fo:region-body /> 
     <fo:region-before region-name="otherPageBefore"/> 
    </fo:simple-page-master> 

    <fo:page-sequence-master master-name="my-sequence"> 
     <fo:repeatable-page-master-alternatives> 
      <fo:conditional-page-master-reference page-position="first" master-reference="firstPage"/> 
      <fo:conditional-page-master-reference page-position="rest" master-reference="otherPage"/> 
     </fo:repeatable-page-master-alternatives> 
    </fo:page-sequence-master> 
</fo:layout-master-set> 

<fo:page-sequence master-reference="my-sequence"> 

    <fo:static-content flow-name="firstPageBefore"> 
     <fo:block>First page!</fo:block> 
    </fo:static-content> 

    <fo:static-content flow-name="otherPageBefore"> 
     <fo:block>Other page!</fo:block> 
    </fo:static-content> 

    <fo:flow flow-name="xsl-region-body" > 
     <xsl:apply-templates/> 
    </fo:flow> 

</fo:page-sequence> 

Antwort

2

Ich benutze dieses Beispiel:

<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> 
    <fo:layout-master-set> 
     <fo:simple-page-master master-name="firstPage" 
      page-height="11in" page-width="8.5in" 
      margin-top=".5in" margin-left="1in" margin-right="1in" margin-bottom=".5in"> 
      <fo:region-body background-color="red"/> 
      <fo:region-before region-name="firstPageBefore"/> 
     </fo:simple-page-master> 
     <fo:simple-page-master master-name="otherPage" 
      page-height="11in" page-width="8.5in" 
      margin-top=".5in" margin-left="1in" margin-right="1in" margin-bottom=".5in"> 
      <fo:region-body /> 
      <fo:region-before region-name="otherPageBefore"/> 
     </fo:simple-page-master> 
     <fo:page-sequence-master master-name="my-sequence"> 
      <fo:repeatable-page-master-alternatives> 
       <fo:conditional-page-master-reference page-position="first" master-reference="firstPage"/> 
       <fo:conditional-page-master-reference page-position="rest" master-reference="otherPage"/> 
      </fo:repeatable-page-master-alternatives> 
     </fo:page-sequence-master> 
    </fo:layout-master-set> 
    <fo:page-sequence master-reference="my-sequence"> 
     <fo:flow flow-name="xsl-region-body" > 
      <fo:block break-after="page">First Page</fo:block> 
      <fo:block break-after="page">Second Page</fo:block> 
      <fo:block break-after="page">Third Page</fo:block> 
      <fo:block>Forth Page</fo:block> 
     </fo:flow> 
    </fo:page-sequence> 
</fo:root> 

Hinweis ich die Hintergrundfarbe von nur der ersten Seite "Region-Körper" rot. Ich erhalte diese Ausgabe mit Apache FOP 2.1:

enter image description here

Nun, wenn ich nur in RTF und nicht den PDF Format zu ändern, ich habe nicht die erwartete Ausgabe. Um das zu testen, habe ich sogar die erste Seite auf 5inx5in geändert. Wenn ich das erzeugte RTF untersuche, gibt es nur ein Seitenlayout, das das letzte ist.

Um dies zu beweisen, ich ändern, um die erste Seite zu 5x5 und die restlichen Seiten zu 11x8.5 Landschaft und dem rohen RTF zeigt dies:

{* \ Generator Apache XML Graphics RTF-Bibliothek;} \ fet0 \ ftnbj \ paperw15840 \ paperh12240 \ Landschaft \ margt720 \ margb720 \ margl1440 \ margr1440 \ headery720 \ footery720 \ itap0

Dies ist nur eine Seitenvorlage, es ist nicht die erste Vorlage. Siehe Bild unten, alle Seiten im Querformat, überhaupt keine Farbe.

Dies scheint ein Fehler oder eine nicht unterstützte Funktion für die Apache FOP RTF-Ausgabe zu sein.

enter image description here

+0

Dieses Beispiel sieht gut aus, aber es gibt ein PDF aus. Funktioniert es auch mit einem RTF? Ich habe nur das Problem beim Ausführen von RTFs, die PDFs funktionieren einwandfrei – jabe

+1

Sie haben Recht. Wenn ich mein Beispiel ausführe oder sogar größere Änderungen wie die Seitenmaße für die erste Seite vorstelle, funktioniert es nicht in der RTF-Ausgabe und in der PDF-Ausgabe. Ich würde einen Apache FOP Bug melden. –

+0

Siehe aktualisierte Antwort –