提问人:Michael 提问时间:6/29/2023 更新时间:6/30/2023 访问量:66
在 Sdt Content 中编辑 MS Word“文档信息”字段 by docx4j
Editing MS Word "Document Info" field in Sdt Content by docx4j
问:
我有一个 docx 文档的模板,使用 docx4j 我想更改 .包含MS Word“文档信息”字段中的文档标题,该标题显示在页眉和第一页上。
不幸的是,当我尝试更改 XML 头文件中的值时,生成的文档中的值不会更新。在没有的情况下编辑其他元素对我来说效果很好。Sdt Content
Sdt Block
<w:t>
<w:sdtContent>
<w:t>
Sdt Block
我想问一下,如何更新包含“文档信息”字段的文本?
这些标题和首页字段在源文件中如何相互关联(它们始终显示相同的值)?Std Content
答:
1赞
JasonPlutext
6/30/2023
#1
这样的 SDT 将如下所示:
<w:sdt>
<w:sdtPr>
<w:alias w:val="Title"/>
<w:dataBinding w:prefixMappings="xmlns:ns0='http://purl.org/dc/elements/1.1/' xmlns:ns1='http://schemas.openxmlformats.org/package/2006/metadata/core-properties' " w:xpath="/ns1:coreProperties[1]/ns0:title[1]" w:storeItemID="{6C3C8BC8-F283-45AE-878A-BAB7291924A1}"/>
<w:text/>
</w:sdtPr>
<w:sdtContent>
<w:p>
<w:r>
<w:t>My title</w:t>
</w:r>
</w:p>
</w:sdtContent>
</w:sdt>
请注意 databinding 元素;属性为 w:xpath=“/ns1:coreProperties[1]/ns0:title[1]”
Word 将尝试从其相应的存储区(由 w:storeItemID 提供)更新任何具有数据绑定元素的 SDT 的内容。(也就是说,仅当没有数据绑定元素时,才可以按照所描述的方式更新文本)
在本例中,它使用在 /docProps/core.xml 中找到的内容更新此 SDT,如下所示:
<cp:coreProperties xmlns:cp="http://schemas.openxmlformats.org/package/2006/metadata/core-properties" xmlns:dc="http://purl.org/dc/elements/1.1/" >
<dc:title>My title</dc:title>
有关如何使用 docx4j 处理该部件的线索,请参阅 https://github.com/plutext/docx4j/blob/VERSION_11_4_8/docx4j-samples-docx4j/src/main/java/org/docx4j/samples/DocProps.java
评论
0赞
Michael
7/3/2023
感谢您清晰全面的解释,澄清了我的问题。
评论