2011-09-29 53 views
4

爲了確保我想與您分享我對FOP vre 1.0的理解, FOP使用自動換行算法,即當數據溢出時表格單元格的寬度,FOP在數據中查找空白區域,如果它找到空白區域,則它將從最近的空白區溢出的數據包裝到該單元格的下一行。FOP警告:段落的第1行溢出可用區域超過50分

但是如果數據沒有空格,那麼FOP就不能包裝數據。 這是我面臨的問題。

我寫這段代碼。

<fo:table-cell border="solid"> 
<fo:block hyphenate="true" language="en" wrap-option="wrap"> 
<xsl:value-of select="welcomeMsg"></xsl:value-of> 
</fo:block> 
</fo:table-cell> 

但是從表格單元格溢出而不是包木窗,因爲welcomeMsg是一個長字符串,在between.I沒有空格需要welcomeMsg表格單元格內被包裹。

+0

您可以舉一個'welcomeMsg'的例子嗎?另外,你是否有任何保留規則可能會破壞你的連字符? –

+0

另外,您是否使用XSLT 2.0? –

+0

如果你想讓它打破長字符串,當它斷裂時,你想要斷字還是僅僅爲了分割字符串?是否有任何模式的字符串休息將是首選? –

回答

2

Apache FOP使用Unicode UAX #14算法進行換行。所以,如果一個單詞(或loooong數)不能被破壞並因此溢出一個表格單元格,那是因爲該算法。通常的解決方法是將零寬度空格(&#x200B;)插入到可能導致溢出的字段中。這可以通過XSLT輕鬆完成。另請參閱:XSL-FO: Force Wrap on Table Entries