【发布时间】:2014-04-21 20:21:42
【问题描述】:
我对 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>
当我想将参数值传递给 page-sequence 对象时,就会出现问题。鉴于我读过的内容,我认为这应该可行:
<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)
我不确定我做错了什么,但我希望这对于有更多经验的人来说会很痛苦。提前致谢。
【问题讨论】:
标签: xml xslt xsl-fo apache-fop