如何使用 renderx(XSL) 制作 pdf 书签
How to make pdf bookmark with renderx(XSL)
我必须修改文件的 xsl 才能制作 pdf。我们曾经使用 AntennaHouse,但有人决定我们现在应该使用 RenderX。所以我需要找到一个等价于
<fo:block axf:outline-level="{$bookmark-level}" axf:outline-expand="false" axf:outline-title="{$bookmark-title}">
</fo:block>
我试过将 axf 更改为 rx,它可以编译,但 pdf 上没有显示书签。
我也试过使用
<rx:outline>
<rx:bookmark internal-destination="">
<rx:bookmark-label>
section
</rx:bookmark-label>
</rx:bookmark>
</rx:outline>
但是这个解决方案也行不通。
理想情况下,我想偶尔在 xsl 中制作书签(因为它是当前在 xsl 文件中制作的方式)。换句话说,我不想在 xsl 文件的开头完成所有操作。
有人有想法吗?
编辑:
我稍微更改了我的代码
<fo:block id="section1">Section 1</fo:block>
<rx:outline>
<rx:bookmark internal-destination="section1">
<rx:bookmark-label>
section
</rx:bookmark-label>
</rx:bookmark>
</rx:outline>
首先,您的 XSL 或 FO 必须包含 rx: 命名空间:
xmlns:rx="http://www.renderx.com/XSL/Extensions"
您没有将书签指向任何内容。您没有内部目的地。如果你有:
<rx:outline>
<rx:bookmark internal-destination="section1">
<rx:bookmark-label>
section
</rx:bookmark-label>
</rx:bookmark>
</rx:outline>
在文档的后面,类似于:
<fo:block id="section1">Section 1</fo:block>
那么应该可以了。通常这些 id 是用一些函数生成的,比如 generate-id().
见http://www.renderx.com/tutorial.html#PDF_Bookmarks
请注意,您也可以避免命名空间并使用 XSL 1.1 大纲结构。
<fo:bookmark-tree> = <rx:outline>
<fo:bookmark> = <rx:bookmark>
<fo:bookmark-title> = <rx:bookmark-label>