2014-04-21 22 views
1

我遇到了XSL-FO處理頁碼的問題。在我的應用程序中,我使用Apache FOP將XML轉換爲PNG內容。然後將這個PNG內容「附加」到TIFF文件的內容中,以創建單個連續文檔的外觀。我們的要求之一是將頁碼添加到PNG內容。但是,捕捉的是,頁面編號需要按照順序開始,即,如果有2頁TIFF內容,則第一個PNG頁面將是第3頁。無法在XSL-FO中設置初始頁碼

計算頁面的數量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> 

當我想將參數值傳遞給頁面序列對象時,就會出現問題。鑑於我讀過的東西,我認爲這應該工作:

<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) 

我不知道我做錯了什麼,但我希望這將是非常明顯的人誰擁有這個更多的經驗。提前致謝。

回答

2

嘗試在initial-page-number屬性使用AVT

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

我會給一個鏡頭,我會讓你知道。 –

+0

解決方案實際上是兩個部分。 首先,該屬性實際上是初始頁碼,而不是初始頁面標籤。我顯然遇到了一些不好的文檔。 第二個是你說的參數引用需要封裝在大括號內。事後看起來很明顯,但當你太接近時會感到沮喪。 –

+0

@FrankMoore - 我應該注意到不正確的屬性名稱。很高興你明白了。 –