我目前正在开发一个库,该库将 docx 文件作为输入并使用它来构建 html 页面,由于 docx 的文档模糊且缺乏,我必须严重依赖示例输出来决定如何处理某些事情。其中之一是超链接。
据我目前所见,docx 至少有两种超链接方式:
锚 -
<w:hyperlink w:anchor="_Toc000000000" history="1"></w:hyperlink>
这似乎是做 toc-links 之类的最喜欢的方式。
ID -
<w:hyperlink w:id="rId7" history="1"></w:hyperlink>
这似乎是为超链接指定 url 的唯一方法(在
.xml.rels
文件中定义了 id)
到目前为止一切顺利,我的问题是我遇到了文件,它们简单地指定了“超链接”的 rStyle(在 textrun 对象上)值,然后似乎相信这将使文本充当指向指定标题的超链接文本运行。
例如,一个文档可以包含以下内容:
<w:p>
<w:pPr>
<w:pStyle w:val="Heading1"/>
</w:pPr>
<w:r>
<w:t>Introduction</w:t>
</w:r>
</w:p>
然后再往下走:
<w:p>
<w:r>
<w:t>This is a hyperlink to </w:t>
</w:r>
<w:r>
<w:rPr>
<w:rStyle w:val="Hyperlink"/>
</w:rPr>
<w:t>Introduction</w:t>
</w:r>
<w:r>
<w:t>.</w:t>
</w:r>
</w:p>
所以我的问题是,这些“超链接”(w:p
而不是w:hyperlink
)实际上是否有效,或者只是我所拥有的文件的作者做错了什么?