我正在寻找一种方法来识别 DOCX 文件(如果它们被移动或重命名)。原因很明显,我正在使用 Open XML SDK,构建一个超链接检查器。
工作完美,至少可以添加或更新文档中的超链接。
问题是,如果我重命名外部文件(source.docx + target.docx 为 targetB.docx),链接就会损坏。我可以找到损坏的链接(只需检查链接的文件是否位于其给定位置)。
但我想要更多。我希望能够通过搜索目录(docx)中的所有文档并扫描它们是否是“目标”来恢复丢失的链接。最简单的方法应该是在文档属性中存储一个 GUID,如果文档被重命名或编辑,它不会改变(校验和不适用)。
然后我创建一个单独的链接列表和相应的 ID,如果有任何文档被重命名,我只需更新链接。我希望这个概念是清楚的。
所以有几个基本问题:
- 是否有存储的“最佳实践” 此“自定义信息”在 Open XML 文档
- 有吗 文字处理文档 (DOCX) 已经 创建了一些唯一标识符 按字
- 您将在哪里保存映射(超链接目标的 GUID)
我希望问题很清楚,如果没有,我会尽力澄清,如果有问题,请发表评论..
谢谢, 克里斯
最佳答案
由于这是五年前的事,我希望您能找到答案。如果其他人对此感兴趣,最好的选择是在 ZIP 存档 (\docProps\custom.xml) 中创建一个新的自定义属性,并将元数据存储在其中。最简单的方法是在 Word UI 中生成一个以查看它们如何工作,但最终您将在 DOCX 存档中得到一个 custom.xml,如下所示:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Properties xmlns="http://schemas.openxmlformats.org/officeDocument/2006/custom-properties" xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes">
<property fmtid="{D5CDD505-2E9C-101B-9397-08002B2CF9AE}" pid="2" name="test">
<vt:lpwstr>chris</vt:lpwstr>
</property>
</Properties>
这些工作原理都记录在 ECMA 376 中,记录文件格式的标准。
据我所知,Word 不存储任何 GUID 来唯一标识文件。
关于guid - DOCX(Open XML WordprocessingDocument)中唯一 ID 的最佳位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/645418/