2017-09-06 1 views
0

Ich benutze xslt und fo, um ein PDF zu erstellen. Meine Anforderung ist, den Inhalt der PDF auf nur eine Seite zu beschränken.Anpassen des Inhalts an eine einzelne Seite in PDF

In einigen Fällen kommt das PDF auf zwei Seiten. Ich muss das vermeiden. Unten ist der Code für die Master-Einrichtung.

<fo:layout-master-set> 

      <fo:simple-page-master master-name="StandardPage" page-height="250mm" page-width="297mm"> 
       <fo:region-body margin-bottom="20mm" margin-top="12mm" margin-left="14mm" margin-right="6mm"/> 
       <fo:region-before region-name="headerContent" extent="12mm"/> 
       <fo:region-after region-name="footer" extent="20mm" precedence="true"/> 
       <fo:region-start region-name="leftBorder" extent="14mm"/> 
       <fo:region-end region-name="rightBorder" extent="6mm"/> 
      </fo:simple-page-master> 
     </fo:layout-master-set> 
     <fo:page-sequence master-reference="StandardPage"> 
      <fo:flow flow-name="xsl-region-body"> 

Unten ist der Inhalt in der xsl. Wir haben 18 Optionen und das Gleiche wird 18 mal wiederholt.

<fo:table-row> 
<fo:table-cell number-columns-spanned="2"> 
    <fo:block font-size="18pt" font-family="ABC" font-weight="bold" text-align="left" line-height="14pt"> 
     <fo:list-block> 
      <fo:list-item> 
       <fo:list-item-label> 
        <fo:block>&#x2022;</fo:block> 
       </fo:list-item-label> 
       <fo:list-item-body start-indent="4mm"> 
        <fo:block> 
        <xsl:variable name="opt18" select="string(//void[@property='optionListEntryEighteen']/string/text())"/> 
         <xsl:value-of select="$opt18"/> 
        </fo:block> 
       </fo:list-item-body> 
      </fo:list-item> 
     </fo:list-block> 
    </fo:block> 
</fo:table-cell> 

Einige mal alle 18 Optionen passen auf eine einzelne Seite und einige Male 16 Optionen auf einer einzigen Seite und die nächsten zwei Optionen passen werden auf die nächste Seite verschoben.

Meine Forderung ist es, die Optionen in einer einzelnen Seite zu passen (Wenn 10 Optionen in einer einzelnen Seite passen werden dann in dieser einzigen Seite die 10 zeigt und zeigt nicht die anderen Optionen.

Wie kann ich Dies erreichen

Antwort

1

ich nicht sicher bin, aber wie wäre es mit fo: single-page-Master-Referenz & fo:?. Block-Behälter mit @height und @ Überlauf = "hidden" Das über FOP getestet

[Probe FO-Datei]

<?xml version="1.0" encoding="UTF-8"?> 
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> 
    <fo:layout-master-set> 
     <fo:simple-page-master master-name="simple-page-master" page-width="10.5in" page-height="5.5in"> 
      <fo:region-body margin-top="0.5in" margin-bottom="0.5in" margin-left="0.5in" 
       margin-right="0.5in"/> 
      <fo:region-before extent="1in" precedence="true" display-align="after"/> 
      <fo:region-start extent="1in"/> 
      <fo:region-end extent="1in"/> 
     </fo:simple-page-master> 
     <fo:page-sequence-master master-name="single-page-master"> 
      <fo:single-page-master-reference master-reference="simple-page-master"/> 
     </fo:page-sequence-master> 
    </fo:layout-master-set> 
    <fo:page-sequence master-reference="single-page-master" reference-orientation="from-page-master-region()" 
     writing-mode="from-page-master-region()" > 
     <fo:flow flow-name="xsl-region-body" font-size="2em"> 
      <fo:block-container height="4in" overflow="hidden" border="thin solid black"> 
       <fo:block>optionListEntry (1)</fo:block> 
       <fo:block>optionListEntry (2)</fo:block> 
       <fo:block>optionListEntry (3)</fo:block> 
       <fo:block>optionListEntry (4)</fo:block> 
       <fo:block>optionListEntry (5)</fo:block> 
       <fo:block>optionListEntry (6)</fo:block> 
       <fo:block>optionListEntry (7)</fo:block> 
       <fo:block>optionListEntry (8)</fo:block> 
       <fo:block>optionListEntry (9)</fo:block> 
       <fo:block>optionListEntry (10)</fo:block> 
       <fo:block>optionListEntry (11)</fo:block> 
       <fo:block>optionListEntry (12)</fo:block> 
       <fo:block>optionListEntry (13)</fo:block> 
       <fo:block>optionListEntry (14)</fo:block> 
       <fo:block>optionListEntry (15)</fo:block> 
       <fo:block>optionListEntry (16)</fo:block> 
       <fo:block>optionListEntry (17)</fo:block> 
       <fo:block>optionListEntry (18)</fo:block> 
      </fo:block-container> 
     </fo:flow> 
    </fo:page-sequence> 
</fo:root> 

[Das Ergebnis]

The result

+0

Dank, die wirklich helfen :) –

Verwandte Themen