工具包的三种技术:
自定义 XML 数据绑定。有了这个,您可以将 XML 文档注入您的 docx,并自动显示数据(通过 XPath 链接)。虽然不在超链接内,所以这可能不适合您。虽然您可以在 Word 中首次打开 docx 时运行 AutoOpen 宏,以将文本转换为超链接。
替代块。有了这个,你可以在你的 docx 中包含 HTML。不过,您需要修改 docx。(见下文 3)
平面 OPC XML。这是将 docx 表示为单个 XML 文件,Word 2007 或更高版本可以愉快地读取或写入。使用它,您可以使用您选择的工具对超链接的内容进行字符串替换。如果需要,您还可以使用此表示形式轻松地将内容注入 AltChunks。
替换超链接的小挑战是您必须在两个地方进行。首先,在文档本身 (document.xml) 中向用户显示的链接文本,其次是目标 URL(在关系部分中)。这些通过 relId 绑定在一起。
如果你使用 AltChunk,你可以在一个地方替换。不确定您的文档有多长,以及如果您有数百个 AltChunk(即使它们基本上只包含一个超链接),您是否会遇到性能问题。
这是一个包含 HTML AltChunk 的 Flat OPC XML 文件的示例(您应该能够将其保存并拖动到 Word 或执行 File > Open):
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<pkg:package xmlns:pkg="http://schemas.microsoft.com/office/2006/xmlPackage">
<pkg:part pkg:contentType="application/vnd.openxmlformats-package.relationships+xml" pkg:name="/_rels/.rels">
<pkg:xmlData>
<rel:Relationships xmlns:rel="http://schemas.openxmlformats.org/package/2006/relationships">
<rel:Relationship Id="rId1" Target="word/document.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument"/>
</rel:Relationships>
</pkg:xmlData>
</pkg:part>
<pkg:part pkg:contentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml" pkg:name="/word/document.xml">
<pkg:xmlData>
<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" >
<w:body>
<w:altChunk r:id="rId2"/>
<w:sectPr>
<w:pgSz w:code="1" w:h="15840" w:w="12240"/>
<w:pgMar w:bottom="1440" w:left="1440" w:right="1440" w:top="1440"/>
</w:sectPr>
</w:body>
</w:document>
</pkg:xmlData>
</pkg:part>
<pkg:part pkg:contentType="application/vnd.openxmlformats-package.relationships+xml" pkg:name="/word/_rels/document.xml.rels">
<pkg:xmlData>
<rel:Relationships xmlns:rel="http://schemas.openxmlformats.org/package/2006/relationships">
<rel:Relationship Id="rId2" Target="../chunk.html" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/aFChunk"/>
</rel:Relationships>
</pkg:xmlData>
</pkg:part>
<pkg:part pkg:compression="store" pkg:contentType="text/html" pkg:name="/chunk.html">
<pkg:binaryData>PGh0bWw+PGJvZHk+PHA+PGEgaHJlZj0iaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tIj5TdGFja092ZXJmbG93PC9hPjwvcD48L2JvZHk+PC9odG1sPg==</pkg:binaryData>
</pkg:part>
<pkg:part pkg:contentType="application/vnd.openxmlformats-package.relationships+xml" pkg:name="/_rels/chunk.html.rels">
<pkg:xmlData>
<rel:Relationships xmlns:rel="http://schemas.openxmlformats.org/package/2006/relationships"/>
</pkg:xmlData>
</pkg:part>
</pkg:package>
二进制数据是
"<html><body><p><a href="http://stackoverflow.com">StackOverflow</a></p></body></html>"
base64 编码(根据 Flat OPC XML 格式的要求)。