我遇到了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)
我不确定我做错了什么,但我希望那些对此有更多经验的人会很痛苦。提前谢谢。