我正在使用Apache FOP将我的文件打印为PDF。从FO转换为PDF时,我收到以下错误:
在column-number =“5”中遇到无效的属性值:org.apache.fop.fo.expr.PropertyException:fo:表格单元格在第5列重叠。(参见位置17071:79)
我在很多行和列中得到这个。
在pdf中表格正确。谁能告诉我这个错误的根本原因是什么?这个错误通常什么时候抛出?
答案 0 :(得分:1)
如果column-number
中的fo:table-cell
属性的值无法被尊重,则会抛出此异常,因为它与先前单元格的number-columns-spanned
或number-rows-spanned
冲突。
让我们看看这个简单的例子,它显示了一个包含3列和一行的表,它会产生同样的错误:
<fo:table>
<fo:table-column column-number="1"/>
<fo:table-column column-number="2"/>
<fo:table-column column-number="3"/>
<fo:table-body>
<fo:table-row>
<fo:table-cell column-number="1">
<fo:block>a</fo:block>
</fo:table-cell>
<fo:table-cell column-number="2" number-columns-spanned="2">
<fo:block>b</fo:block>
</fo:table-cell>
<fo:table-cell column-number="3">
<fo:block>c</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
类似的情况可能发生在跨越多行的单元格中,与以下行中的单元格混淆:
<fo:table>
<fo:table-column column-number="1"/>
<fo:table-column column-number="2"/>
<fo:table-body>
<fo:table-row>
<fo:table-cell column-number="1" number-rows-spanned="2">
<fo:block>A</fo:block>
</fo:table-cell>
<fo:table-cell column-number="2">
<fo:block>B</fo:block>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell column-number="1">
<fo:block>C</fo:block>
</fo:table-cell>
<fo:table-cell column-number="2">
<fo:block>D</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
此处冲突的单元格是第1行中的第一个,第2行中的第一个。
我建议检查您的FO文件或为其创建它的代码(可能是XSLT?),对于具有number-columns-spanned
或number-rows-spanned
的单元格,然后(存在冲突的地方)删除这些属性或冲突的细胞。
在pdf中表格正确。
这是非常奇怪,因为此异常的严重性(至少在FOP 1.1中)是致命的,即程序异常终止。
我认为,如果确实创建了一个pdf文件,那么错误的表格会被错误完全“吞噬”,因此您的输出可能会遗漏某些部分。< / p>