【发布时间】:2013-04-18 17:37:40
【问题描述】:
我使用 Apache FOP 编写了一个应用程序,它可以生成包含多个章节的 PDF。有没有办法,我可以知道 - 哪一章出现在哪一页上。实际上,我需要在开始时创建索引,告诉哪个章节出现在哪个页面上。
【问题讨论】:
标签: java pdf-generation xsl-fo apache-fop
我使用 Apache FOP 编写了一个应用程序,它可以生成包含多个章节的 PDF。有没有办法,我可以知道 - 哪一章出现在哪一页上。实际上,我需要在开始时创建索引,告诉哪个章节出现在哪个页面上。
【问题讨论】:
标签: java pdf-generation xsl-fo apache-fop
你可以在需要知道页码的元素上加上一个ID,然后用<fo:page-number-citation ref-id="id"/>引用它。
例子:
在每个包含章节标题的块上放置一个带有自动生成的 ID 的 ID:
<xsl:for-each select="chapter">
<fo:block id="{generate-id(.)}">
<xsl:value-of select="@title"/>
</fo:block>
</xsl:for-each>
然后,在索引所在的开头循环遍历相同的输入元素时引用您为块提供的 ID:
<xsl:for-each select="chapter">
<fo:block id="{generate-id(.)}">
<fo:page-number-citation ref-id="{generate-id(.)}"/>
</fo:block>
</xsl:for-each>
您的索引(这里更像是目录)是否在实际内容之前生成并不重要,因为 ID 是由 XSL 解析器计算的,并且 FOP 在页面之后解析这些引用布局(以及页码)已确定。
【讨论】: