Table 将 margins 属性作为列表项抛出异常 ClassCastException

Table with margins attribute as list item throws exception ClassCastException

我正在使用

org.docx4j.convert.in.xhtml.XHTMLImporterImpl

当我调用 convert(html, "");以下 html:

<ul>
    <li>first list item</li>
    <li>
        <table style="margin-left: auto; margin-right: auto; width: 75%; table-layout: fixed;">
            <tbody>
            <tr>
                <td>
                    <p>ROW</p>
                </td>
            </tr>
            </tbody>
        </table>
    </li>
</ul>

我得到以下堆栈跟踪:

    java.lang.ClassCastException: class org.docx4j.org.xhtmlrenderer.css.constants.IdentValue cannot be cast to class org.docx4j.org.xhtmlrenderer.css.style.derived.LengthValue (org.docx4j.org.xhtmlrenderer.css.constants.IdentValue and org.docx4j.org.xhtmlrenderer.css.style.derived.LengthValue are in unnamed module of loader 'app')
    at org.docx4j.convert.in.xhtml.ListHelper.getAbsoluteIndent(ListHelper.java:381)
    at org.docx4j.convert.in.xhtml.TableHelper.setupTblPr(TableHelper.java:120)
    at org.docx4j.convert.in.xhtml.XHTMLImporterImpl.traverse(XHTMLImporterImpl.java:1020)
    at org.docx4j.convert.in.xhtml.XHTMLImporterImpl.traverse(XHTMLImporterImpl.java:1284)
    at org.docx4j.convert.in.xhtml.XHTMLImporterImpl.traverse(XHTMLImporterImpl.java:1284)
    at org.docx4j.convert.in.xhtml.XHTMLImporterImpl.traverse(XHTMLImporterImpl.java:1284)
    at org.docx4j.convert.in.xhtml.XHTMLImporterImpl.traverse(XHTMLImporterImpl.java:1284)
    at org.docx4j.convert.in.xhtml.XHTMLImporterImpl.traverse(XHTMLImporterImpl.java:825)
    at org.docx4j.convert.in.xhtml.XHTMLImporterImpl.convert(XHTMLImporterImpl.java:698)

我可以看出它是由 table 的样式属性中的 margin-left 和 margin-right 引起的,因为如果我删除这些 convert() 不会引发异常。 有谁知道不涉及从 table?

中删除边距的任何解决方法

margin-left 通常是一个长度,但是因为值为“auto”,这里是一个IdentValue。

https://github.com/plutext/docx4j-ImportXHTML/commit/466d2d01983333c3c4e456aea926f99bb4755016 如果它是一个 IdentValue,则忽略它。