2015-09-02 62 views
1

我正在使用Dita-OT 2.1.0,並試圖爲我的Dita文檔定製PDF輸出。我的文檔由很多表格組成,這些表格可以是短的或多頁的。如果可能的話,我想要做的是防止表破壞多個頁面。例如我希望在表格之前有一個新頁面,如果這樣可以防止表格分成兩頁。將表格保存在PDF上的單頁中

我想是什麼把這個成我的custom.xsl

<xsl:attribute-set name="tbody.row"> 
<xsl:attribute name="keep-with-next.within-page">always</xsl:attribute> 
</xsl:attribute-set> 

這似乎這樣做行留樣同一頁面上,但如果一行是足夠長的時間去到下一個頁面,然後它去那裏,而不是僅僅移動整個桌子..任何想法如何解決這個問題?

對於設置

<xsl:attribute-set name="table"> 
    <xsl:attribute name="keep-together.within-page">always</xsl:attribute> 
</xsl:attribute-set> 

它仍然無法正常工作。現在表格保持在同一頁面上,但長於1頁的表格不能完全顯示。

回答

1

你也應該是這樣的:

<xsl:attribute name="keep-together.within-page">1</xsl:attribute>

的答案可能的解釋可以在這裏找到: http://www.dpawson.co.uk/xsl/sect3/keepsNbreaks.html

+0

這看起來很有前途。謝謝!目前唯一的問題是,即使表格進入下一頁,每個頁面末尾都有黑色邊框表示表格末端。所以一張桌子有兩個「結局」,但只有一個「開始」邊界。 – burm

+0

我不確定,可能是Apache FOP中的一個錯誤。也許你也可以嘗試像XEP或Antenna House這樣的商業處理器。 –

0

的問題是一個棘手的,因爲你要交易的靈活性爲輸出的外觀。您可以向表中添加outputclass屬性以使輸出在表之前中斷並更改表處理,以便將表包含在fo中應用了break-before屬性的塊中。我還沒有看過表格的基本代碼,但它可能需要您創建一個選擇方案來應用該塊。

0

在單程過程中不可能做到你想要的。

如果一個表可以容納一個頁面上,你可以使用保together.within頁給力的是,但在當時你生成表有知道該表將有多大沒有通用的方法。

FO沒有提供任何方式來說「只有在整個頁面都適合的情況下,纔將整個表格保留在頁面內,否則根據需要將其分開」。

有多種方法可以進行多通道處理,以便您可以更精確地調整表格佈局,但這需要一些自定義編程,並且依賴於特定的FO引擎(儘管有一個選項可以與天線衆議院或FOP:http://www.w3.org/community/ppl/wiki/XSLTExtensions

一個折衷的解決方案是使用保持與 - 下一個第一ñ行,以確保表不會太早突破,但只有當該行是一致的深度作品 - 如果行深度可能差異很大,那麼您仍可能遇到第一行超過一頁然後繁榮的情況。

相關問題