FOP 警告:段落的第 1 行超出可用区域超过 50 点

kri*_*ngh 5 xslt xsl-fo apache-fop

只是为了确保我想与您分享我对 FOP vre 1.0 的理解,FOP 使用自动换行算法,即当数据溢出表格单元格的宽度时,FOP 会查找数据中的空白,如果它找到白色空格,然后它将从最近的空格溢出的数据包装到该单元格的下一行。

但是如果数据没有空格怎么办,那么 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>
Run Code Online (Sandbox Code Playgroud)

但它从表格单元格溢出,而不是换行,因为welcomeMsg 是一个长字符串,中间没有空格。我需要将welcomeMsg 包裹在表格单元格内。

Jer*_*rki 3

Apache FOP 实现了Unicode UAX #14换行算法。因此,如果一个单词(或很长的数字)无法被破坏并因此溢出表格单元格,那是因为该算法。通常的解决方法是将零宽度空格 ( &#x200B;) 插入到您知道可能导致溢出的字段中。这可以通过 XSLT 轻松完成。另请参阅:如何强制换行表条目