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'.