我使用Docbook XSL和Apache FOP生成包含表的PDF文档。使用默认设置,表格具有固定宽度的列和换行符。但是,如果一个单词比单元格宽度长,它就会溢出单元格。在这种情况下,我想把单词分成几行。这是怎么做到的?
断字不是一个解决方案,因为单词不需要是英文的。(编辑:其他语言的连字符也不是解决方案。可能事先不知道数据是用什么语言写的,而且可能有无法连字符的"单词",例如数字字符串。)
我找到了将keep-together.within-column="always"
用于fo:table-row
的建议,但似乎没有任何效果。
(编辑:)另一个建议是在所有字符之间插入零宽度空格。但这也打破了单词中间的短单词。我需要一个尽可能突破单词边界的解决方案,只有在需要的时候才突破单词中间。
FOP与几乎所有FO处理器一样,可以为英语以外的语言断字。看见http://xmlgraphics.apache.org/fop/2.1/hyphenation.html
您可以尝试使用FO处理器,如Antenna House AH Formatter,它可以实现"自动"表格布局,并可以根据文本的中断位置调整表格列的宽度(以及为多种语言进行连字符)。
在表格单元格中打断文本的其他答案如下:
- 字符串长度后强制换行
- XSL-FO:对表项强制换行