Pull to refresh

DOCX и PHP легкое заполнение документов Word

image

Для заполнения документа необходимо всего лишь:
  1. Скопировать в документ свой текст, шаблон документа;
  2. Расставить закладки (Bookmarks) и задать им имена;
  3. Любым серверным скриптом(php, aspx, и др.) заменить файл имя документа.docx.zip/CustomXML/item2.xml.


А теперь по подробнее.



Уже достаточно давно я интересуюсь возможными альтернативами заполнения документации в формате .docx на стороне сервера. Искал давно, но ничего такого, что бы радовало не нашел, наиболее понравившимися из того, что нашел было PHPWord, и недавняя статья Честная генерация DOCX на PHP. Часть 1.

В моем случае следующая специфика задач:

  1. генерация файлов docx с нуля не подходит, т.к. формы периодически меняются и нет желания постоянно их перекладывать в код;
  2. вариант с заменой по регулярке тоже не очень, использовал PHPWord в целом очень ничего библиотека, только сначала вообще плохо искал, потом, когда поправил их код и регулярку, начало лучше искать, но проблема этогшо метода в том, что иногда форматирование нарушалось;
  3. требуется легко, просто и быстро.


не найдя того, что хотел, решил изучать C#, маялся конечно долго, но оно того стоит, представляю Вам собственно сами файлы(Яндекс.Диск): файл .docx, файл .vsto

Особенности чтобы все нормально работало

имена закладок (Bookmarks) задаются исходя из того, как вы назовете поля в XML файле по следующему принципу:

Интел компани
Генерального директора
Петров Иван
Устава
23
34



имя поля к примеру: Company_Loc_a так должна называться закладка
я ниже 3го уровня не пробовал, но должен работать до бесконечной вложенности.

Буду рад советам

В настоящий момент файл не совсем то, чего я от него хочу, буду благодарен за замечания, а главное посоветуйте, если не трудно:
1) как сделать 1 файл, т.е. либо отвязаться от файла vsto либо интегрировать его ка-нибудь, или может на сервер кинуть и ссылку внедрить?
2) сейчас я привязывался к закладкам Bookmarks this.Bookmarks[i.Key] i.Key — это имя закладки
как сделать аналогично с PlainText…
сейчас его можно вызвать, но только одним способом
this.CompanyName где CompanyName — имя поля текста.
3) и подскажите, есть в C# что-то похожее на this.{i.Key} чтобы динамически вызывать параметр или как в PHP $$ или ${переменная со сзначением создаваемой переменной} ??
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.