История изменений
Исправление dimgel, (текущая версия) :
Помнится, лет 10 назад для аналогичной задачи (подстановка данных в шаблон документа и генерация PDF) в качестве шаблонов юзали ODT – формат документов OpenOffice: это zip-архив с XML-файлами, структурно очень похожими на HTML (что-то типа <Row> вместо <tr>, <Cell> вместо <td> и т.п.). Распаковывали (можно хранить на сервере уже распакованным, чтобы время экономить), подставляли данные, запаковывали назад в новый ODT (прямо в памяти), и натравливали на полученный ODT сервлет JODConverter (file-upload HTTP POST request с файлом прямо из памяти), который в свою очередь делегировал к резидентному headless-опенофису.
Очень удобно править такие шаблоны – тупо открываешь в офисе и правишь. Попробуй со шрифтами или цветами в генераторе latex-шаблонов поиграться – озвереешь. А тут настоящий WYSIWYG. Даже циклы по строкам накладных задавали ЕМНИП как-то в тексте полей таблиц (что-то типа <Cell>{for …}</Cell> в первом поле таблицы), т.е. даже тут не надо было грязными руками XML ломать.
Исправление dimgel, :
Помнится, когда-то для аналогичной задачи (подстановка данных в шаблон документа и генерация PDF) в качестве шаблонов юзали ODT – формат документов OpenOffice: это zip-архив с XML-файлами, структурно очень похожими на HTML (что-то типа <Row> вместо <tr>, <Cell> вместо <td> и т.п.). Распаковывали (можно хранить на сервере уже распакованным, чтобы время экономить), подставляли данные, запаковывали назад в новый ODT (прямо в памяти), и натравливали на полученный ODT сервлет JODConverter (file-upload HTTP POST request с файлом прямо из памяти), который в свою очередь делегировал к резидентному headless-опенофису.
Очень удобно править такие шаблоны – тупо открываешь в офисе и правишь. Попробуй со шрифтами или цветами в генераторе latex-шаблонов поиграться – озвереешь. А тут настоящий WYSIWYG. Даже циклы по строкам накладных задавали ЕМНИП как-то в тексте полей таблиц (что-то типа <Cell>{for …}</Cell> в первом поле таблицы), т.е. даже тут не надо было грязными руками XML ломать.
Исходная версия dimgel, :
Помнится, когда-то для аналогичной задачи (подстановка данных в шаблон документа и генерация PDF) в качестве шаблонов юзали ODT – формат документов OpenOffice: это zip-архив с XML-файлами, структурно очень похожими на HTML (например вместо , ЕМНИП вместо и т.п.). Распаковывали (можно хранить на сервере уже распакованным, чтобы время экономить), подставляли данные, запаковывали назад в новый ODT (прямо в памяти), и натравливали на полученный ODT сервлет JODConverter (file-upload HTTP POST request с файлом прямо из памяти), который в свою очередь делегировал к резидентному headless-опенофису.
Очень удобно править такие шаблоны – тупо открываешь в офисе и правишь. Попробуй со шрифтами или цветами в генераторе latex-шаблонов поиграться – озвереешь. А тут настоящий WYSIWYG. Даже циклы по строкам накладных задавали ЕМНИП как-то в тексте полей таблиц (что-то типа {for …} в первом поле таблицы), т.е. даже тут не надо было грязными руками XML ломать.