无法在XSL-FO中设置初始页码

时间:2014-04-21 20:21:43

标签: xml xslt xsl-fo apache-fop

我遇到了XSL-FO处理页码编号的问题。在我的应用程序中,我使用Apache FOP将XML转换为PNG内容。然后将此PNG内容“附加”到来自TIFF文件的内容,以创建单个连续文档的外观。我们的一个要求是将页码添加到PNG内容中。然而,问题是页面编号需要按顺序开始,即如果有2页TIFF内容,则第一个PNG页面将是第3页。

计算TIFF内容的页数很容易,我将其作为参数传递给变换器。

// setup XSLT
TransformerFactory factory = javax.xml.transform.TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer(new StreamSource(xslFile));
transformer.setParameter("tiffPgOffset", getTiffPgOffset());

我将参数添加到我的XSL文件中以处理页面偏移计数。

   <xsl:param name="tiffPgOffset" />

我可以很好地访问页面内的参数值。

  <fo:static-content flow-name="xsl-region-after" font-family="Arial">
    <fo:block font-size="16">Page 
      tiffPgOffset = <xsl:value-of select="$tiffPgOffset" />   <!-- it works here -->
    </fo:block>
  </fo:static-content>

当我想将参数值传递给页面序列对象时,会出现问题。鉴于我所读到的内容,我认为这应该有效:

 <fo:page-sequence master-reference="main" initial-page-label="$tiffPgOffset">   <!-- this does not work -->

但事实并非如此。相反,我得到以下运行时错误:

Invalid property encountered on "fo:page-sequence": initial-page-label (No context info available)

我不确定我做错了什么,但我希望那些对此有更多经验的人会很痛苦。提前谢谢。

1 个答案:

答案 0 :(得分:2)

尝试使用initial-page-number属性中的AVT

initial-page-number="{$tiffPgOffset}"