Обновите оглавление (оглавление) в.docx, используя nodeJs и docxtemplater

Средство Microsoft Word имеет настройки конфиденциальности по умолчанию с отключенными макросами и установленными сценариями Trusted VB. Таким образом, написание макросов (сценарий VB) для обновления полей не является хорошей идеей, чтобы указывать пользователям разрешать присоединение макросов к файлу документа путем изменения настроек.

Откройте сгенерированный файл Docx и нажмите "alt" + "F9". Эта команда покажет все коды полей. Мы будем использовать код поля ' {NUMPAGES} ' (с фигурными скобками) для общего количества страниц. Обратите внимание, что нижний колонтитул и верхний колонтитул являются автоматически обновляемыми полями (автоматически обновляет поля после открытия документа), но для оглавления мы не можем поместить его в верхний или нижний колонтитул. Закройте файл документа.

В вашем коде, где вы использовали xml- теги для {NUMPAGES}, установите для dirty значение true, т.е. var totalPages = '<w:instrText w:instr="TOC" w:dirty="true"> NUMPAGES </w:instrText> и в файле шаблона Docx используйте {@totalPages} для сопоставления значения xml.

Файл Docx на самом деле является zip- файлом, переименуйте файл документа шаблона из ".docx" в ".zip". Вы найдете пару папок и файлов в формате zip. Папка "word" содержит ваши основные файлы document.xml (содержимое файла документа) и settings.xml (настройки файла документа). Откройте файл settings.xml и напишите <w:updateFields w:val="true" /> под <w:settings> убедитесь, что вы пишете код выше </w:settings>, Это попросит пользователя обновить поля во время открытия файла docx, потому что мы установили значение updateFields в true в нашем файле "settings.xml". Теперь сохраните файл "settings.xml" и обновите zip-файл (если требуется). Переименуйте zip-файл обратно в ".docx". Теперь сгенерируйте файл docx, он автоматически обновит все поля.

0 ответов

Другие вопросы по тегам