【问题标题】:Unreadable content error after generating word document from template with docx4j使用 docx4j 从模板生成 word 文档后出现不可读的内容错误
【发布时间】:2021-07-26 05:11:51
【问题描述】:

我们最近一直在将 docx4j 用于需要从具有变量注入的模板生成 docx 的项目。为此,我们购买了 plutext-enterprise 库,以便能够合并多个文档并结合变量注入:

 <dependency>
            <groupId>com.plutext</groupId>
            <artifactId>Plutext-Enterprise</artifactId>
            <version>6.1.0.0</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.docx4j</groupId>
            <artifactId>docx4j</artifactId>
            <version>6.0.1</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.commons</groupId>
                    <artifactId>commons-compress</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

问题是,当打开生成的文档时,会显示“不可读内容”的错误,并询问我们是否要修复该文档。最终,我想删除它。我尝试了很多方法,例如升级 docx4j 的版本,但我一直保持在使用企业库时概述的兼容性矩阵内。

此外,我尝试使用完全空白的模板文档运行测试,以消除文档中内容的任何错误,生成的文档仍然显示此错误。这让我相信这是图书馆本身的问题。任何人都可以就此提供进一步的建议吗?

【问题讨论】:

    标签: docx4j


    【解决方案1】:

    问题在于微软引入了需要声明的新命名空间前缀。解决方法是将docx4j升级到v8.2.9:https://www.docx4java.org/forums/announces/docx4j-8-2-9-released-following-word-updates-t2979.html

    您现有的 Enterprise jar 应该没问题,但有更新的版本可用,因此可以选择升级。

    【讨论】:

    • 感谢您的回答和电子邮件(我错过了)。该方法有效,但在 HeaderFooterUtil 中存在以下空指针异常问题,我通过确保为每个 BlockRange 设置 HeaderFooterBehaviour 来解决此问题: page1.setHeaderBehaviour(BlockRange.HfBehaviour.INHERIT); page1.setFooterBehaviour(BlockRange.HfBehaviour.INHERIT);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-24
    • 1970-01-01
    • 1970-01-01
    • 2022-11-22
    • 2010-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多