Разработка/доработка шаблонизатора документов Word

Цена договорная • безналичный расчёт, электронные деньги
03 августа 2017, 16:32 • 2 отклика • 32 просмотра
Имеется документ с переменными (см. полное ТЗ со скриншотом в приложенном документе).

Данные предоставлены из внешнего источника в виде JSON или другом удобном. Необходимо реализовать следующий функционал шаблонизатора:
• Подстановка простых переменных ({{name}}, {{address}} итд).
• Подстановка картинок (в JSON – в Base64).
• Подстановка значений в колонтитулах.
• Циклы типа foreach, в которых повторяются секции документа, находящиеся между соответствующими тэгами ({{all analysis}}).
• Подстановка данных в график.
• Подстановка данных в таблицу (добавление рядов).
• Желательно, но необязательно:
o простые условия (if/then/else);
o элементарные функции (округление чисел, форматирование дат итд.) – если возможно, с вызовом реальных функций языка (компилированием кода на лету).
• Должен поддерживаться текст, разбитый тэгами проверки орфографии или настроек языка.
• Приведённый выше синтаксис шаблона (скобки, директивы циклов) примерный. Если этот же функционал легче/лучше реализовать с помощью другого синтаксиса, не проблема. Напр. с помощью элементов формуляров.

• Вариант 1: реализовать как VBA внутри самого документа, который при первом открытии подставлял бы необходимые значения.
o После первого запуска и успешной подстановки данных скрипт больше запускать не должен, а данные должны остаться такими, какие были подставлены.
o Будет ли это хорошо работать на всех версиях MS Word (Windows/Mac) или OpenOffice/других реализациях?
o Не будет ли проблем с собственно выполнением скрипта при открытии документа (может быть запрещено по умолчанию итд.)?
• Вариант 2: реализовать как веб-сервис для IIS на .NET/OpenXML, который принимал бы извне шаблон документа и данные в виде JSON и возвращал бы заполненный документ.
o Есть похожий , но непонятно, поддерживает ли графики. Плюс к нему надо написать собственно заполнение из JSON.

Пишите предлагаемые направления решений, вашу цену и сроки. (Предложения сразу обсудить детали в скайпе без какой бы то ни было дополнительной информации рассматриваться не будут.)

ЗЫ. В приложении ТЗ пронумерованы 2 и 3, т.к. ТЗ 1 – собственно формирование набора данных из БД, это будет реализовано своими силами.
Файлы