列号fop中遇到无效的属性值

时间:2015-01-23 12:42:04

标签: pdf apache-fop

我正在使用Apache FOP将我的文件打印为PDF。从FO转换为PDF时,我收到以下错误:

  

在column-number =“5”中遇到无效的属性值:org.apache.fop.fo.expr.PropertyException:fo:表格单元格在第5列重叠。(参见位置17071:79)

我在很多行和列中得到这个。

在pdf中表格正确。谁能告诉我这个错误的根本原因是什么?这个错误通常什么时候抛出?

1 个答案:

答案 0 :(得分:1)

如果column-number中的fo:table-cell属性的值无法被尊重,则会抛出此异常,因为它与先前单元格的number-columns-spannednumber-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>
  • 第一个细胞是正常细胞
  • 第二个单元格跨越两列,因此它占据列#2和#3
  • 但是还有另一个单元格,声称在第3列 - &gt; 第3和第3个细胞在第3列重叠

由于跨越行的单元格导致的错误

类似的情况可能发生在跨越多行的单元格中,与以下行中的单元格混淆:

<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-spannednumber-rows-spanned的单元格,然后(存在冲突的地方)删除这些属性或冲突的细胞。

  

在pdf中表格正确。

这是非常奇怪,因为此异常的严重性(至少在FOP 1.1中)是致命的,即程序异常终止。

我认为,如果确实创建了一个pdf文件,那么错误的表格会被错误完全“吞噬”,因此您的输出可能会遗漏某些部分。< / p>