2017-10-12 85 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完成,所以我希望有其他的東西。 –