我希望文本 block 在溢出时换行到下一行。文本中没有空格或破折号。 Apache FOP 不会包装此文本,也不会剪辑它,即使该 block 包含overflow="hidden"和wrap-option="wrap"属性。 FO 文件不包含任何 keep-together 设置,因此不会导致此问题。
版本:Apache FOP 0.95、1.0 和 1.1 出现问题。不幸的是,旧版本无法在我的 DocBook Maven 设置中运行,因此我尚未测试这些版本。
这是我的 FO 文件中的 block :
<fo:block
overflow="hidden"
wrap-option="wrap"
white-space-collapse="false"
white-space-treatment="preserve"
linefeed-treatment="preserve"
text-align="start"
margin-top="0.5em"
margin-right="0.5pt"
margin-bottom="1em"
margin-left="0.5pt"
border-width="0.5pt"
border-left-style="solid"
border-left-color="#D3CEC6"
padding="2mm"
font-family="Courier New"
font-size="8pt"
background-color="#EBE5D7">veryverylongtextwithoutspacesordashes
</fo:block>
最佳答案
为了使字符串换行,行内必须有可中断字符。
考虑通过在某些位置插入零宽度空格字符(
或
)来预处理您的输入。格式化程序会看到它,并且仅在必要时才会在这些字符处换行。将看不到该字符的其他出现。
<fo:block>very​very​long​text​without​spaces​or​dashes</fo:block>
如果文本是数字字符串,则在每第 n 个符号处插入零宽度空格字符可能是合乎逻辑的。
或者,您可以将格式化程序设置为根据特定语言的连字符规则连字符字符串。事实上,连字本质上是在原文中添加连字标记。同样,它要求字符串包含属于某种语言的有意义的文本。
关于pdf - Apache FOP 不会换行我的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17529831/