我遇到了将表格标题和边框输出为PDF格式的问题。我正在使用docx4j 3.0.0但我也遇到了与2.8.1相同的问题。
我有一个由TinyMCE生成的xhtml片段。我做了一些处理,以docx4j想要它的方式,并使用XHTMLImporterImpl将其转换为openXML。 我使用marshaller来获取docx格式,并使用Docx4j.toPDF来获取pdf格式。 它适用于大多数情况,斜体,下划线,粗体,对齐,图像等。
当涉及表格标题和边框时,它以docx格式工作,但不是PDF格式。它只是排除了具有这些属性的表。我认为xhtml - > openXML工作正常,但Docx4j.toPDF不支持这些属性或其他东西。我试着在网上搜索没有运气。我想知道是否有人已经知道这件事。
我得到的错误是
java.lang.StringIndexOutOfBoundsException: String index out of range: 9
at java.lang.String.substring(String.java:1907)
at org.apache.fop.fo.expr.PropertyTokenizer.nextColor(PropertyTokenizer.java:239)
at org.apache.fop.fo.expr.PropertyTokenizer.next(PropertyTokenizer.java:175)
at org.apache.fop.fo.expr.PropertyParser.parseProperty(PropertyParser.java:118)
at org.apache.fop.fo.expr.PropertyParser.parse(PropertyParser.java:91)
at org.apache.fop.fo.properties.PropertyMaker.make(PropertyMaker.java:438)
at org.apache.fop.fo.PropertyList.convertAttributeToProperty(PropertyList.java:413)
at org.apache.fop.fo.PropertyList.addAttributesToList(PropertyList.java:321)
at org.apache.fop.fo.FObj.processNode(FObj.java:122)
at org.apache.fop.fo.flow.table.TableFObj.processNode(TableFObj.java:232)
...
Caused by: org.docx4j.openpackaging.exceptions.Docx4JException: Exception exporting package
at org.docx4j.convert.out.common.AbstractExporter.export(AbstractExporter.java:79)
at org.docx4j.Docx4J.toFO(Docx4J.java:467)
at org.docx4j.Docx4J.toPDF(Docx4J.java:477)
对于表
,openXML看起来像这样<w:tbl>
<w:tblPr>
<w:tblW w:w="0" w:type="auto"/>
<w:tblCellSpacing w:w="20" w:type="dxa"/>
<w:tblInd w:w="115" w:type="dxa"/>
<w:tblBorders>
<w:top w:val="inset" w:color="#000000" w:sz="8"/>
<w:left w:val="inset" w:color="#000000" w:sz="8"/>
<w:bottom w:val="inset" w:color="#000000" w:sz="8"/>
<w:right w:val="inset" w:color="#000000" w:sz="8"/>
<w:insideH w:val="none"/>
<w:insideV w:val="none"/>
</w:tblBorders>
</w:tblPr>
<w:tblGrid>
<w:gridCol w:w="1045"/>
<w:gridCol w:w="903"/>
</w:tblGrid>
<w:tr>
<w:tc>
<w:tcPr>
<w:tcW w:w="1045" w:type="dxa"/>
<w:tcBorders>
<w:top w:val="outset" w:color="#000000" w:sz="8"/>
<w:left w:val="outset" w:color="#000000" w:sz="8"/>
<w:bottom w:val="outset" w:color="#000000" w:sz="8"/>
<w:right w:val="outset" w:color="#000000" w:sz="8"/>
</w:tcBorders>
</w:tcPr>
<w:p>
<w:pPr>
<w:spacing w:after="0"/>
<w:ind w:left="0"/>
<w:jc w:val="left"/>
</w:pPr>
<w:r>
<w:rPr>
<w:b w:val="false"/>
<w:i w:val="false"/>
<w:color w:val="000000"/>
<w:sz w:val="22"/>
</w:rPr>
<w:t>Col 1</w:t>
</w:r>
</w:p>
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:w="903" w:type="dxa"/>
<w:tcBorders>
<w:top w:val="outset" w:color="#000000" w:sz="8"/>
<w:left w:val="outset" w:color="#000000" w:sz="8"/>
<w:bottom w:val="outset" w:color="#000000" w:sz="8"/>
<w:right w:val="outset" w:color="#000000" w:sz="8"/>
</w:tcBorders>
</w:tcPr>
<w:p>
<w:pPr>
<w:spacing w:after="0"/>
<w:ind w:left="0"/>
<w:jc w:val="left"/>
</w:pPr>
<w:r>
<w:rPr>
<w:b w:val="false"/>
<w:i w:val="false"/>
<w:color w:val="000000"/>
<w:sz w:val="22"/>
</w:rPr>
<w:t>Col2</w:t>
</w:r>
</w:p>
</w:tc>
</w:tr>
<w:tr>
<w:tc>
<w:tcPr>
<w:tcW w:w="1045" w:type="dxa"/>
<w:tcBorders>
<w:top w:val="outset" w:color="#000000" w:sz="8"/>
<w:left w:val="outset" w:color="#000000" w:sz="8"/>
<w:bottom w:val="outset" w:color="#000000" w:sz="8"/>
<w:right w:val="outset" w:color="#000000" w:sz="8"/>
</w:tcBorders>
</w:tcPr>
<w:p>
<w:pPr>
<w:spacing w:after="0"/>
<w:ind w:left="0"/>
<w:jc w:val="left"/>
</w:pPr>
<w:r>
<w:rPr>
<w:b w:val="false"/>
<w:i w:val="false"/>
<w:color w:val="000000"/>
<w:sz w:val="22"/>
</w:rPr>
<w:t>Row1</w:t>
</w:r>
</w:p>
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:w="903" w:type="dxa"/>
<w:tcBorders>
<w:top w:val="outset" w:color="#000000" w:sz="8"/>
<w:left w:val="outset" w:color="#000000" w:sz="8"/>
<w:bottom w:val="outset" w:color="#000000" w:sz="8"/>
<w:right w:val="outset" w:color="#000000" w:sz="8"/>
</w:tcBorders>
</w:tcPr>
<w:p>
<w:pPr>
<w:spacing w:after="0"/>
<w:ind w:left="0"/>
<w:jc w:val="left"/>
</w:pPr>
<w:r>
<w:rPr>
<w:b w:val="false"/>
<w:i w:val="false"/>
<w:color w:val="000000"/>
<w:sz w:val="22"/>
</w:rPr>
<w:t>table</w:t>
</w:r>
</w:p>
</w:tc>
</w:tr>
</w:tbl>
我认为默认边框颜色有#000000而不是000000的错误。是否有预处理xhtml的解决方法?
重复问题http://www.docx4java.org/forums/pdf-output-f27/tabl-caption-and-border-issue-docx4j-3-0-0-t1763.html
我会在回答时更新