2017-10-12 55 views
0

我必须修改文件的xsl来制作pdf。我们曾经使用AntennaHouse,但有人认为我们现在应该使用RenderX。所以我需要找到一个相当于如何使用renderx制作pdf书签(XSL)

<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> 
+0

您的书签是条死胡同,因为没有目标(内部目标=“”) –

+0

即使有一个内部目的地@KevinBrown它并没有解决我的问题,也显示了我的PDF书签。 –

+0

您可能没有rx:名称空间。您必须在您的XSL中添加此名称空间。见下面的答案。我将添加命名空间 –

回答

0

首先,你的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> 
+0

还没有书签。我将使用我添加的代码编辑我的文章。 –

+0

您不能通过文档零星地添加它们。您必须将它们添加到rx:outline或fo:bookmark-tree中。 –

+0

哦......我明白了。感谢你的回答。因为可以用AntennaHouse完成,所以我希望有其他的东西。 –