如何将自定义 XML 存储部分添加到 Word 文档 - 最好使用 docx4j

How to add custom XML storage part to Word doc - preferrably with docx4j

我正在尝试使用 docx4j(版本 3.2.1)用 XML 数据填充 Word 内容控件。我正在对此进行评估,以便将其用于发票生成。我们要生成的文档不是很复杂,所以这对我来说是个不错的方法。

我已经通过 Word 2010 开发工具创建了内容控件。这就是我尝试将 XML 注入 docx 的方式(取自 this example):

WordprocessingMLPackage wordMLPackage = Docx4J.load(new File(input_DOCX));

FileInputStream xmlStream = new FileInputStream(new File(input_XML));

Docx4J.bind(wordMLPackage, xmlStream, Docx4J.FLAG_BIND_INSERT_XML & Docx4J.FLAG_BIND_BIND_XML);

我得到以下异常:

org.docx4j.openpackaging.exceptions.Docx4JException: Couldn't find CustomXmlDataStoragePart! exiting..
    at org.docx4j.Docx4J.bind(Docx4J.java:300)
    at org.docx4j.Docx4J.bind(Docx4J.java:271)

如果 CustomXmlDataStoragePart 尚不存在,我如何添加带有 docx4j 的 CustomXmlDataStoragePart?或者 should/can 我直接在 Word 中做这个?

注意:我决定直接在 Word 中准备模板,因为以后这些模板必须由非技术用户编辑,如果可能的话,我不想给他们增加额外的工具负担。

你说你"created the content control through Word 2010 dev tools"。除非你指的是内容控制工具包,否则你需要使用它或更好的 OpenDoPE Word 插件。两者都不是。

这些工具将自定义 xml 部分添加到 docx 中,并允许您通过 XPath 数据绑定将其与内容控件相关联。

然后,当您在运行时调用 Docx4J.bind 时,docx4j 会找到现有的自定义 xml 部分,并将其替换为您提供的包含运行时数据的 xml 文件。