XSL-FO:在表格单元格中包装长单词

时间:2016-05-11 12:02:23

标签: pdf-generation xsl-fo apache-fop docbook-xsl

我使用Docbook-XSL和Apache FOP生成包含表格的PDF文档。使用默认设置,表具有固定宽度的列,并且行在字边界处换行。但是如果一个单词比单元格宽度长,它会溢出单元格。在这种情况下,我想分开多行的单词。怎么可以这样做?

连字符不是解决方案,因为单词不必是英文。 (编辑:其他语言中的连字也不是解决方案。可能不会提前知道数据所使用的语言,并且可能有"单词"无法连字,例如数字字符串。 )

我找到了对keep-together.within-column="always"使用fo:table-row的建议,但这似乎没有任何效果。

(编辑:)另一个建议是在所有字符之间插入零宽度空格。但这也打破了中间词的短语。我需要一个尽可能在字边界处打破的解决方案,并且仅在需要时才打破中间字。

1 个答案:

答案 0 :(得分:2)

与几乎所有FO处理器一样,FOP可以连接除英语之外的其他语言。见http://xmlgraphics.apache.org/fop/2.1/hyphenation.html

您可以尝试使用FO处理器,例如Antenna House AH Formatter,它实现'自动'表格布局,并可以根据文本可以中断的位置调整表格列的宽度(以及对多种语言进行连字符调整) )。

在表格单元格中打破文本的其他答案位于: