guid - DOCX(Open XML WordprocessingDocument)中唯一 ID 的最佳位置

标签 guid openxml

我正在寻找一种方法来识别 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/

相关文章:

c# - Oracle 的顺序(梳状)GUID

sql-server - NewID() - 是否有很高的机会公开上一个/下一个 GUID

c# - OpenXML在word文档C#中插入评论回复

vb.net - 如何使用 openxml 2.0 创建日期单元格

visual-c++ - 初始化 GUID 变量

azure - Azure AD 应用程序 ID 在整个 Azure 中是否唯一?

c# - 使用自定义 XML 部分隐藏 Word 内容控件

.net - OpenXml 和 PowerPoint 入门

javascript - 如何使用 Word JS API 删除插入的 OOXML 注释?

c# - 将可为 null 的 GUID 从 C# 移植到 Java