2017-09-06 6 views
0

私はxsltとfoを使ってPDFを作成しています。私の要求は、PDFのコンテンツを1ページだけに制限することです。コンテンツをPDFで1ページにまとめる

場合によってはPDFが2ページ分入ってくることがあります。私はそれを避けなければならない。以下はマスターセットアップのコードです。

<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"> 

以下はxslの内容です。 18種類のオプションがあり、同じことが18回繰り返されます。

<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> 

いくつかの回全18個のオプションは、単一のページに収まると16個のオプションは、単一ページに収まらいくつかの回と、次の2つのオプションが次のページに移動されています。

私の要件は、10個のオプションは、単一ページに適合されている場合は、その単一のページに10を示し、他のオプションを表示しません(単一ページのオプションに合わせてある。

どのようにすることができます?私は自信を持っていないよ

答えて

1

これを実現するが、foの使用についての方法:FOシングルページマスタ参照&:?。@heightと@オーバーフローとブロック・コンテナ=「隠された」これはFOPを経由してテストされ

[サンプルFOファイル]

<?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> 

[結果]

The result

+0

本当に助けてくれてありがとう:) –

関連する問題