2011-03-31 81 views
4

我正在使用xsl-fo创建带有编号页面(x的第x页)的pdf文档,但总是在文档的末尾生成空白页面。有谁知道为什么下面的xsl生成一个空白页面?如果我删除fo:block last-page,则空白页不会呈现。在xsl-fo转换中防止不需要的空白页

<xsl:template match="/Report"> 
    <fo:root font-family="Georgia,Garamond,New York,Times,Time New Roman,Serif"> 
     <xsl:copy-of select="$fo-layout-master-set"/> 
     <fo:page-sequence master-reference="default-page" initial-page-number="1" format="1"> 
      <!-- Footer content --> 
      <xsl:call-template name="getStaticFooter"/> 

      <fo:flow><fo:block/> 
      </fo:flow> 
     </fo:page-sequence> 

     <fo:page-sequence master-reference="default-page"> 
      <!-- Footer content --> 
      <xsl:call-template name="getStaticFooter"/> 

      <fo:flow> 

       <fo:block id="last-page"/> 
      </fo:flow> 
     </fo:page-sequence> 
    </fo:root> 
</xsl:template> 

<xsl:template name="getStaticFooter"> 
    <fo:static-content flow-name="xsl-region-after"> 
     <fo:table xsl:use-attribute-sets="contentTable"> 
      <fo:table-column number-columns-repeated="3" width="proportional-column-width(10)"/> 
      <fo:table-body> 
       <fo:table-row> 
        <fo:table-cell text-align="right"> 
         <fo:block> 
          <fo:inline font-size="7pt" font-weight="bold">Generated by </fo:inline> 
         </fo:block> 
         <fo:block> 
          <fo:inline font-size="7pt">Page <fo:page-number/> of <fo:page-number-citation ref-id="last-page"/></fo:inline> 
         </fo:block> 
        </fo:table-cell> 
       </fo:table-row> 
      </fo:table-body> 
     </fo:table> 
    </fo:static-content> 
</xsl:template> 

+0

lwburk,由于用于提高标题。 – tessa 2011-03-31 20:51:28

回答

2

我想这是因为你有2个不同的fo:page-sequence的。尝试将<fo:block id="last-page"/>移动到第一页中的流程末尾,并删除第二个fo:page-sequence

实施例:

<xsl:template match="/Report"> 
    <fo:root font-family="Georgia,Garamond,New York,Times,Time New Roman,Serif"> 
     <xsl:copy-of select="$fo-layout-master-set"/> 
     <fo:page-sequence master-reference="default-page" initial-page-number="1" format="1"> 
      <!-- Footer content --> 
      <xsl:call-template name="getStaticFooter"/>  
      <fo:flow> 
       <fo:block/><!-- I'm assuming this is where the actual content will exist; there's most likely a <xsl:apply-templates/> here. --> 
       <fo:block id="last-page"/> 
      </fo:flow> 
     </fo:page-sequence>  
    </fo:root> 
</xsl:template> 
+0

你是对的,谢谢! – tessa 2011-03-31 20:49:05

+0

不客气! – 2011-03-31 22:04:18