TinyButStrong OpenTBS включает вывод одного шаблона в другой суб-шаблонизатор

Мы используем TinyButStrong и OpenTbs для подготовки документов Word (docx) из шаблонов. Нам нужно обработать несколько суб-шаблонов (в зависимости от того, что выбрал пользователь), а затем объединить все в виде строк таблицы в основной шаблон.

В общем, нам нужно что-то вроде этого:

Final Template Table Row 1 - Output from docx1 template Row 2 - Output from docx2 template

Строки могут различаться, так же как и файл суб-шаблона для каждой отдельной строки.

TBS, кажется, имеет разметку subtpl, однако неясно, как он принимает аргументы, особенно когда нам нужно сообщить ему, какой файл использовать, и параметры для каждого шаблона, с которым нужно связать.

Любой совет в этом отношении будет принята с благодарностью.

Благодарю.

1 ответ

Очень трудно объединить два документа DOCX (то же самое для XLSX, PPTX, ...) из-за внутренних элементов, автоматически управляемых Ms Office (изображения, диаграммы, стили, нумерация, ...).

Внутренние элементы имеют внутренние идентификаторы, которые отличаются от DOCX к другому DOCX, даже если они визуально полностью равны.

Таким образом, когда вы берете часть содержимого из первого документа, его внутренние идентификаторы, вероятно, не соответствуют другому документу, в который вы хотите вставить его. Когда эта проблема возникает, госпожа Office дает сообщение

Мы сожалеем. Мы не можем открыть xxxxx.docx, потому что обнаружили проблему с его содержимым.

Единственный способ вставить внешний фрагмент из DOCX в другой DOCX - убедиться, что в этом фрагменте не используются внутренние IDS. Такие фрагменты сложно построить.

Но технически извлечь фрагмент из документа просто. Смотрите GetBlockSource()

И вставить его в другое тоже просто. См. MergeBlock() с источником type = 'text'.

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