【问题标题】:Unable to set initial page number in XSL-FO无法在 XSL-FO 中设置初始页码
【发布时间】: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


    【解决方案1】:

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

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

    【讨论】:

    • 我会试一试,我会告诉你的。
    • 解决方案实际上是两个部分。首先,该属性实际上是初始页码,而不是初始页标签。我显然遇到了一些糟糕的文档。第二个是正如你所说的参数引用需要封装在花括号中。事后看来很明显,但当你离得太近时会令人沮丧。
    • @FrankMoore - 我应该注意到不正确的属性名称。很高兴你明白了。
    • 奇怪的是,我也应该这样做。我直接从“我该怎么做?”中的示例中获得了该属性。 Dave Pawson 关于 XSL-FO 的书中的部分。但是,本书中的所有其他参考资料都将属性称为初始页码。不过,非常感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-24
    • 2021-06-18
    • 2015-02-01
    • 2012-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多