【问题标题】:What are the allowed ways of creating hyperlinks in docx files?在 docx 文件中创建超链接的允许方法是什么?
【发布时间】:2016-04-10 10:59:11
【问题描述】:

我目前正在开发一个库,该库将 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 的唯一方法(id 在.xml.rels 文件中定义)

到目前为止一切顺利,我的问题是我遇到了文件,它们简单地指定了“超链接”的 rStyle(在 textrun 对象上)值,然后似乎相信这将使文本充当指向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)实际上是有效的还是只是我所拥有的文件的作者做错了什么?

【问题讨论】:

    标签: docx


    【解决方案1】:

    当您说 docx 格式模糊且缺乏文档时,您是否查看过规范? http://www.ecma-international.org/publications/standards/Ecma-376.htm(虽然我确实发现它们在关键点上很模糊。)

    据我所知,至少有两种创建链接的方法。 w:hyperlink 就是其中之一。

    w:hyperlink 元素可以在内部或外部链接,并且或多或少按照您发现的方式工作。

    在外部超链接的情况下,它将有一个关系 id,并且在此文档的关系中标记为外部的条目具有一个 uri。规范说如果超链接是外部的,锚属性应该被忽略,但在实践中,我发现Word会在这里粘贴外部url的锚部分。例如。 http://example.com/page#myAnchor 将在关系中存储不带#myAnchor 的uri,hyperlinkanchor 属性将具有不带“#”的“myAnchor”。您可能需要同时检查两者。

    对于内部超链接,锚点应该与 w:bookmarkStart 元素的 name 属性匹配,或者是像“_GoBack”或“_top”这样的特殊值。

    第二种情况是链接的图像,不幸的是,这要复杂得多。图像将有一个w:drawing,该图像将具有一个docPr 元素和一个hlinkClick 元素,该元素将具有与目标的关系ID。规范在这一点上似乎有点不清楚,但看看 Word 做了什么,看起来如果关系是内部的,它将是一个书签名称(带有 '#' 前缀),如果是外部的,一个 uri。

    【讨论】:

    • 嗯,我很抱歉措辞不当。我应该指定“好的文档”。此外,我在使用文档一词时没有包括规范,因此完全可以理解的错误传达。 :) 非常感谢您的回答!
    • 没问题。我只是想确保你知道它,即使它不会回答你的问题。我发现它对大多数事情都非常有帮助,至少作为一个起点,当关键事情丢失或没有明确指定时,或者当 Word 的行为似乎与规范不同时,我会感到沮丧。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-12
    • 2021-01-15
    • 1970-01-01
    • 1970-01-01
    • 2013-02-13
    • 1970-01-01
    相关资源
    最近更新 更多