Docxtemplater вставка простого XML

Я использую библиотеку DocxTemplater от edi9999 в качестве решения для создания отчетов.docx из шаблонов и данных JSON, и я доволен этим.

Однако теперь я должен выделить несколько слов в своих отчетах. Например, мне нужно заменить {contents} с большим текстом, где выделены несколько слов.

Это означает, что у меня есть 2 решения здесь:

  1. Используйте какие-то маркеры внутри моих данных (например, in this data one {highlight(red)}{word} is red, которые затем интерпретируются DocxTemplater.
  2. Прямо замените тег желаемым XML. Например, я заменяю {contents} с этим XML (хранится в моих данных JSON как "contents" поле): <w:r> <w:rPr> <w:highlight w:val="cyan"/> </w:rPr> <w:t>lol</w:t> </w:r>, Если я сделаю это сейчас, я получу свой XML, встроенный в <w:r><w:t>HERE</w:t></w:r>, так что MS Word считает, что файл поврежден.

Для "сырых" XML-данных я хочу использовать какой-то специальный тег, такой как {@myXmlData}, который не позволит библиотеке окружить содержимое <w:r><w:t></w:t></w:r>,

Я думаю, что второе решение намного лучше и очень гибкое: оно позволяет пользователям использовать DocxTemplater, даже если оно не удовлетворяет некоторым их потребностям. Они могут просто использовать XML для своих очень специфических потребностей.

Я думаю, что это действительно отличная новая функция для библиотеки DocxTemplater.

Однако сейчас я просто хочу решить свою проблему, и у меня нет времени тщательно изучать или изменять код библиотеки.

Было бы здорово, если бы кто-то указывал на места в коде библиотеки и идеи, как легко расширить ее, чтобы добавить эту функцию.

РЕДАКТИРОВАТЬ: теперь эта функция поддерживается! Проверьте https://github.com/edi9999/docxtemplater/issues/7

1 ответ

Я реализовал это действительно после https://github.com/edi9999/docxtemplater/issues/7

Ты можешь написать

В вашем docx:

{} @RawXml

В ваших данных:

{
  rawXml:'<w:p> <w:r> <w:rPr> <w:highlight w:val="cyan"/>
</w:rPr> <w:t>lol</w:t> </w:r> </w:p>'
}
Другие вопросы по тегам