2

Office.js/Word JavaScript API のバグを報告するにはどうすればよいですか?

バグは、range.insertOoxml(...) または context.document.body.insertOoxml(...) を介してアンカーのようなブックマークを挿入しようとすると、API は成功を示しますが、結果のドキュメントにはブックマーク。唯一の回避策は、アンカーのある段落の後に追加の段落を挿入することです。残念ながら、これにより本体に余分な改行が導入され、エクスペリエンスが失われます。

基本的に、これは静かに失敗します...

<w:body>
<w:p>
<w:bookmarkStart w:id="0" w:name="bookmarkAnchor"/>
<w:bookmarkEnd w:id="0"/>
</w:p>
</w:body>

...しかし、これは機能します....

<w:body>
<w:p>
<w:bookmarkStart w:id="0" w:name="bookmarkAnchor"/>
<w:bookmarkEnd w:id="0"/>
</w:p>
<w:p/> <--- this is a miserable workaround!
</w:body>

問題を示すテスト コードをアップロードできてうれしいです。

4

1 に答える 1

2

この質問を送ってくれてありがとう。ここに 3 つの問題があります。

  1. まず、サンプルで説明されている XML は、OOXML ではなく WordProcessingML にあります。insertOoxmlメソッドは、完全な Office Open XML を受け取ることが期待されています

  2. そうは言っても...サンプルのOOXML表現がわずかに異なることがわかりました。これは、新しい段落を追加しなくても機能します。以下のサンプルを参照してください。

  3. なぜブックマークを使用しているのですか? 開発者の観点からは、それらを使用するのは非常に信頼性が低いため、代わりにコンテンツ コントロールを使用することを強くお勧めします。ブックマークは、エンド ユーザーによって非常に簡単に破られます。

わかりましたので、まずここに私が使用しているマークアップがあります:

<?xml version="1.0" standalone="yes"?>
<?mso-application progid="Word.Document"?>
<pkg:package xmlns:pkg="http://schemas.microsoft.com/office/2006/xmlPackage">
  <pkg:part pkg:name="/_rels/.rels" pkg:contentType="application/vnd.openxmlformats-package.relationships+xml" pkg:padding="512">
    <pkg:xmlData>
      <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
        <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="word/document.xml"/>
      </Relationships>
    </pkg:xmlData>
  </pkg:part>

  <pkg:part pkg:name="/word/document.xml" pkg:contentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml">
    <pkg:xmlData>
      <w:document  xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
        <w:body>
          <w:p w:rsidR="00000000" w:rsidRDefault="005C4C17">
            <w:bookmarkStart w:id="0" w:name="MyBookmark"/>
            <w:r>
              <w:t>provides</w:t>
            </w:r>
            <w:bookmarkEnd w:id="0"/>
          </w:p>
          <w:sectPr w:rsidR="00000000">
            <w:pgSz w:w="12240" w:h="15840"/>
            <w:pgMar w:top="1440" w:right="1440" w:bottom="1440" w:left="1440" w:header="720" w:footer="720" w:gutter="0"/>
            <w:cols w:space="720"/>
          </w:sectPr>
        </w:body>
      </w:document>
    </pkg:xmlData>
  </pkg:part>
</pkg:package>

コードは次のとおりです。

 function insertOOXMLwithBookmark() {

        Word.run(function (context) {
            var myOOXML = "<?xml version='1.0' standalone='yes'?> <?mso-application progid='Word.Document'?> <pkg:package xmlns:pkg='http://schemas.microsoft.com/office/2006/xmlPackage'> <pkg:part pkg:name='/_rels/.rels' pkg:contentType='application/vnd.openxmlformats-package.relationships+xml' pkg:padding='512'> <pkg:xmlData> <Relationships xmlns='http://schemas.openxmlformats.org/package/2006/relationships'> <Relationship Id='rId1' Type='http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument' Target='word/document.xml'/> </Relationships> </pkg:xmlData> </pkg:part> <pkg:part pkg:name='/word/document.xml' pkg:contentType='application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml'> <pkg:xmlData> <w:document xmlns:w='http://schemas.openxmlformats.org/wordprocessingml/2006/main'> <w:body> <w:p w:rsidR='00000000' w:rsidRDefault='005C4C17'> <w:bookmarkStart w:id='0' w:name='MyBookmark'/> <w:r> <w:t>provides</w:t> </w:r> <w:bookmarkEnd w:id='0'/> </w:p> <w:sectPr w:rsidR='00000000'> <w:pgSz w:w='12240' w:h='15840'/> <w:pgMar w:top='1440' w:right='1440' w:bottom='1440' w:left='1440' w:header='720' w:footer='720' w:gutter='0'/> <w:cols w:space='720'/> </w:sectPr> </w:body> </w:document> </pkg:xmlData> </pkg:part> </pkg:package>";

            context.document.getSelection().insertOoxml(myOOXML, "replace");
            return context.sync();

サンプル コードは、現在の選択を置き換えるか、挿入ポイント (基本的には範囲) に追加するだけですが、もちろん、範囲をサポートする任意のオブジェクトでこのまったく同じメソッドを再利用できます。 !!!

ところで、私はあなたが役に立つかもしれないこれについての記事を書きました: http://dev.office.com/docs/add-ins/word/create-better-add-ins-for-word-with-office-open-xml

于 2016-07-05T19:18:25.397 に答える