Java Docx4j以编程方式添加w:sdt内容控制
我正在构建一个小型java程序来测试docx4j所需的所有“文档相关”特性,以满足我的项目需求。摘要:能够创建带有“内容控件”的模板,这些模板将作为“原始模板”提供给用户。让用户增强它们,最终用数据填充它们。我之所以使用“docx4j”,是因为它具有“重复和有条件”的特性 这是我的进度,以编程方式: 1) 创建空白文档(完成) 2) 添加带有xml数据的自定义xml部件(发票示例中的part3.xml)。(已完成) 3) 添加带有xml xpaths引用的自定义xml部件(发票示例中的part4.xml)。(已完成) 4) 添加内容控件(挂起) 它必须类似于发票示例中的摘录:Java Docx4j以编程方式添加w:sdt内容控制,java,ms-word,openxml,docx,docx4j,Java,Ms Word,Openxml,Docx,Docx4j,我正在构建一个小型java程序来测试docx4j所需的所有“文档相关”特性,以满足我的项目需求。摘要:能够创建带有“内容控件”的模板,这些模板将作为“原始模板”提供给用户。让用户增强它们,最终用数据填充它们。我之所以使用“docx4j”,是因为它具有“重复和有条件”的特性 这是我的进度,以编程方式: 1) 创建空白文档(完成) 2) 添加带有xml数据的自定义xml部件(发票示例中的part3.xml)。(已完成) 3) 添加带有xml xpaths引用的自定义xml部件(发票示例中的part4
<w:sdt>
<w:sdtPr>
<w:alias w:val="Customer name" />
<w:tag w:val="od:xpath=x1&customer name=customer name" />
<w:id w:val="1418037941" />
<w:placeholder>
<w:docPart w:val="DefaultPlaceholder_22675703" />
</w:placeholder>
<w:dataBinding w:xpath="/invoice[1]/customer[1]/name[1]" w:storeItemID="{8B049945-9DFE-4726-9DE9-CF5691E53858}" />
<w:text />
</w:sdtPr>
<w:sdtContent>
<w:p>
<w:r>
<w:t>Joe Bloggs</w:t>
</w:r>
</w:p>
</w:sdtContent>
</w:sdt>
乔·布洛格斯
我的问题是:如何生成这个xml?可以通过Java代码或仅通过Word完成?“1418037941”和“DefaultPlaceholder_22675703”值是什么以及如何生成的?我想我不能“发明”它们,而是在其他地方被引用。
我在MainDocumentPart类中寻找某个方法来执行此操作,但找不到它。
我是不是误解了什么
其他步骤对我来说几乎没有问题:
5) 执行“预处理”(完成)
6) 执行“过程”(完成)
7) 执行“剥离”(完成,移除repat标签除外)
非常感谢你的帮助!
David您当然可以使用docx4j以编程方式创建内容控件。也就是说,创建“模板”的常用方法是使用创作工具,例如 要回答您的具体问题:-
- 您可以省略w:占位符
- 规范说w:id是xsd:int类型,是介于 -2147483648和2147483647。您可以随机生成它,也可以忽略它