【发布时间】:2013-02-04 17:12:19
【问题描述】:
我正在尝试确定以编程方式从 Microsoft Word 文档 (docx) 中提取“编辑器”的最佳方法 - 特别是添加时出现在列表中的名称列表(或电子邮件/域用户名)用户通过“审阅”选项卡->“保护”部分,“限制编辑”选项->“2.编辑限制”部分->“个人”列表框。如果这可以在没有代码的情况下以某种方式实现,我提到 SharePoint 将用于在工作流中提取此信息。
我相信我可以通过解压缩文件并在 document.xml 文件中搜索“w:permStart”节点来做到这一点,但我不愿诉诸这种黑客攻击,因为它可能会在某些时候中断微软应该决定改变吗?
Office API 似乎提供了一种可能性 (Editor Interface),但我现在无法对此进行测试,而且我不确定它是否处于正确的 api 级别,因为它是一个接口而不是实际属性文档对象或类似的。
编辑
Word 2010 UI 通过Restrict Editing 按钮(或 Word 2007 中的Protect Document 按钮)在功能区的Protect 区域的Review 选项卡下列出我要提取的名称,其中打开Restrict Formatting and Editing 面板。
在此面板的第二部分(标记为 2. Editing restrictions),如果没有标记为 Individuals 的框(在 Exceptions (optional) 下方),请选中 Allow only this type of editing in the document 复选框(它在随后的下拉列表中选择什么并不重要)。
这将允许在 Exceptions (optional) 部分下添加用户,这是通过单击 More users... 链接打开一个对话框来完成的,其中输入电子邮件地址(连接到 Microsoft 身份验证服务器)或域用户帐户(如果Word 当时正在域系统上运行),用分号分隔。这些用户将被添加到标记为 Individuals 的列表中 - 这是我想从 word 文档中提取的列表(如下图所示)。
此列表用于对下拉列表中指定的一般文档规则进行“例外”,并且只会保存与给定例外范围相关联的名称 - 通过将电子邮件或名称添加到列表中来创建范围,选择一段文本(或整个文档),然后选中该名称旁边的复选框以将其与所选范围相关联。保存文档时,对该名称的引用将作为一个或多个 w:permStart 元素(每个文本范围一个元素)的 w:ed 属性添加到基础 document.xml 文件中
我可以解压缩 docx 文件,解析 document.xml 文档并提取这些元素中这些属性中的所有名称,但是如果有 Microsoft Word API 替代方式这样做 - 我更喜欢通过 API,因为它几乎肯定会更易于维护和稳定。
【问题讨论】:
-
这些数据在 Word UI 中保存在哪里?我只能找到“相关人员”...
-
@DerekTomes 感谢您的问题(我试图在第一段中指出这一点,但是...)请参阅上面的编辑以详细说明如何查找(或在必要时重新创建) Word UI 中的名称列表