2016-05-11 61 views
0

我正在使用Docbook-XSL和Apache FOP生成包含表格的PDF文檔。使用默認設置,表格具有固定寬度的列和行在文字邊界處換行。但是如果一個單詞比單元格寬度長,它會溢出單元格。在這種情況下,我想分解多行文字。這怎麼能做到?XSL-FO:在單元格中包裝長單詞

連字符不是一個解決方案,因爲單詞不需要用英文。 (編輯:其他語言的連字符也不是解決方案,可能不會提前知道數據是什麼語言,並且可能存在不能用連字符連接的「單詞」,例如數字字符串。)

我找到了使用keep-together.within-column="always"作爲fo:table-row的建議,但這似乎沒有任何效果。

(編輯:)另一個建議是在所有字符之間插入零寬度空格。但是這也會在詞的中間打破簡短的單詞。我需要一個解決方案,只要有可能就會在單詞邊界處突破,並且只有在需要時纔會中間單詞。

回答

1

與幾乎每個FO處理器一樣,FOP可以連接英語以外的其他語言。請參閱http://xmlgraphics.apache.org/fop/2.1/hyphenation.html

您可以嘗試使用FO處理器(例如Antenna House AH Formatter),該處理器實現「自動」表格佈局,並可根據文本可以破裂的位置調整表格列的寬度(以及連字符對於多種語言)。

處理表格單元格文本斷其他答案在:

+0

我編輯我的問題,以澄清爲什麼這些解決方案是不理想的我。 – laurt

+0

請參閱http://stackoverflow.com/questions/4350788/xsl-fo-force-wrap-on-table-entries/33689540#33689540中的第二個解決方案,該解決方案在每十三個非空間之後插入'​'字符。 –