Как вставить номер страницы документа в заголовок со словом addin? - PullRequest
0 голосов
/ 13 июня 2018

Я знаю, как вставить нижний колонтитул и верхний колонтитул, но мне интересно, как я могу вставить номер страницы с моим словом addin?

'Word.run(function (context) {
 var mySections = context.document.sections;
 context.load(mySections, 'body/style');
 return context.sync().then(function () {var myFooter = 
   mySections.items[0].getFooter("primary");
   myFooter.insertParagraph(footerText.value, "End");
                return context.sync().then(function () {
                    console.log("Added a footer to the first section.");
                });
            });

'

1 Ответ

0 голосов
/ 04 июля 2018

Я наконец нашел время, чтобы исследовать и собрать это воедино.Этот код написан ScriptLab.Поскольку ScriptLab жалуется на XML-код, разбитый на строки, XML-код во фрагменте кода находится в одной строке.Я вставил его в форматированную форму под кодом для лучшей читаемости, чтобы можно было увидеть, как структурирован Word Open XML.

Чтобы получить этот Word Open XML, я сохранил документ Word с полем PAGE.Затем я удалил все ненужные файлы XML, как описано в статье Создание улучшенных надстроек для Word с Office Open XML .

Обратите внимание, что нет необходимости вводить XML в ваш код.Он также может быть сохранен в файле (обратите внимание на инструкции в статье о ссылках на XML в файле) или создан с использованием такого инструмента, как Open XML SDK для Javascript.

JS в ScriptLab

$("#run").click(() => tryCatch(run));

async function run() {
    // Writes a PAGE field to the primary document header
    await Word.run(async (context) => {
        let sXml = '<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:r><w:fldChar w:fldCharType="begin"/></w:r><w:r><w:instrText xml:space="preserve"> Page </w:instrText></w:r><w:r><w:fldChar w:fldCharType="separate"/></w:r><w:r><w:rPr><w:noProof/></w:rPr><w:t>1</w:t></w:r><w:r><w:fldChar w:fldCharType="end"/></w:r></w:p></w:body></w:document></pkg:xmlData></pkg:part></pkg:package>';

        //console.log("XML: " + sXml);
        let hdr = context.document.sections.getFirst()
            .getHeader("Primary"); //returns Word.Body type
        hdr.insertOoxml(sXml, 'Start');
        await context.sync();
    });
}

/** Default helper for invoking an action and handling errors. */
async function tryCatch(callback) {
    try {
        await callback();
    }
    catch (error) {
        OfficeHelpers.UI.notify(error);
        OfficeHelpers.Utilities.log(error);
    }
}

XML

<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:r>
              <w:fldChar w:fldCharType="begin"/>
            </w:r>
            <w:r>
              <w:instrText xml:space="preserve"> Page </w:instrText>
            </w:r>
            <w:r>
              <w:fldChar w:fldCharType="separate"/>
            </w:r>
            <w:r>
              <w:rPr>
                <w:noProof/>
              </w:rPr>
              <w:t>1</w:t>
            </w:r>
            <w:r>
              <w:fldChar w:fldCharType="end"/>
            </w:r>
          </w:p>
        </w:body>
      </w:document>
    </pkg:xmlData>
  </pkg:part>
</pkg:package>
...