4

私は現在、docx ファイルを入力として受け取り、それを使用して html ページを構築するライブラリに取り組んでいます. その 1 つがハイパーリンクです。

私がこれまでに見た限りでは、docx にはハイパーリンクを行う方法が少なくとも 2 つあります。

  • アンカー -<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オブジェクトで)値を単純に指定するファイルに遭遇したことです。これにより、テキストが指定されたタイトルへのハイパーリンクとして機能すると信じているようですテキストラン。

たとえば、ドキュメントには次の内容を含めることができます。

<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)が実際に有効なのか、それともその単語または私が持っているファイルの作成者が間違っているのかということです.

4

1 に答える 1

3

docx 形式はあいまいでドキュメントがないと言うとき、仕様を確認しましたか? http://www.ecma-international.org/publications/standards/Ecma-376.htm (ただし、重要な点が曖昧だと思います。)

リンクを作成する方法は少なくとも 2 つあります。w:hyperlink もその 1 つです。

要素は内部または外部のw:hyperlinkいずれかにリンクし、多かれ少なかれあなたが発見したように機能します。

外部ハイパーリンクの場合、関係 ID と、uri を持つ外部としてマークされたこのドキュメントの関係のエントリがあります。仕様では、ハイパーリンクが外部の場合、アンカー属性を無視する必要があると記載されていますが、実際には、Word が外部 URL のアンカー部分をここに貼り付けることがわかりました。たとえば、リレーションシップhttp://example.com/page#myAnchorなしで uri を格納し、の属性には「#」なしの「myAnchor」が含まれます。おそらく両方をチェックしたいと思うでしょう。#myAnchoranchorhyperlink

内部ハイパーリンクの場合、アンカーは要素のname属性と 一致するかw:bookmarkStart、「_GoBack」や「_top」などの特別な値にする必要があります。

2 番目のケースは、リンクされた画像です。残念ながら、これははるかに複雑です。要素を持つ要素をw:drawing持つイメージの があり、宛先との関係 ID があります。この時点で仕様が少し不明確に見えますが、Word が何をするかを見ると、関係が内部の場合はブックマーク名 (先頭に「#」を追加)、外部の場合は uri になるようです。docPrhlinkClick

于 2013-03-18T18:44:49.903 に答える