docx4j - VariablePrepare.prepare() 中的 NullPointerException

docx4j - NullPointerException in VariablePrepare.prepare()

当我使用在线版 Office365 创建 .docx 时,我的程序在调用 VariablePrepare.prepare()

时崩溃

相关代码行:

InputStream inputStream = new ByteArrayInputStream(docxFileContent);
WordprocessingMLPackage wordprocessingMLPackage = WordprocessingMLPackage.load(inputStream);
VariablePrepare.prepare(wordprocessingMLPackage);

堆栈跟踪:

Caused by: java.lang.NullPointerException
    at org.docx4j.openpackaging.packages.WordprocessingMLPackage.transform(WordprocessingMLPackage.java:271)
    at org.docx4j.openpackaging.packages.WordprocessingMLPackage.filter(WordprocessingMLPackage.java:297)
    at org.docx4j.model.datastorage.migration.VariablePrepare.prepare(VariablePrepare.java:79)

我使用 Online Office 365 创建的文档:https://drive.google.com/file/d/1MGZpsKZokmw6nyLbt_aAxsueUBl5tMnq/view?usp=sharing

请注意,当您检查此文件的属性时,它缺少页面、字数、字符数等基本内容的值。请参阅 https://drive.google.com/file/d/1Vvuf2zJvGqigX6SMVu-C6EMsYXu0378I/view?usp=sharing。如果您使用桌面版 office 打开文档,那么这些值会突然填充并且不再发生崩溃。此问题特定于来自 Online Office 365 的文档。

现已固定为 https://github.com/plutext/docx4j/commit/b877520c0a02804f00b2fce57d56405f045947f0

那部分代码假设 word/document。xml,这对您的文档来说是不正确的。

此修复程序将出现在 docx4j 6.1.0 中(并且会在每晚发布的版本中更快)。