Добавление колонтитулов в Word файл(docx). На сервере, без COM и всяких тэгов

12.02.23

Разработка - Инструментарий разработчика

Предлагаю самый простой и оптимальный вариант добавления нижнего колонтитула (картинку и текст) в любой docx файл, если это надо сделать на сервере, без тэгов, без COM. Метод разбор XML файлов. Обработка является уникальный, так-как за все время не нашел аналога в исполнении 1С, тыкните ссылкой, если ошибаюсь.

Скачать исходный код

Наименование Файл Версия Размер
Добавление нижнего колонтитула в Word файл(docx). На сервере, без COM и всяких тэгов.:
.epf 17,29Kb
24
.epf 17,29Kb 24 Скачать

Создавая бэкенд на 1С (так получилось...) для системы электронного документооборота, сталкивался с нестандартными задачами, одна из которых является добавление нижнего колонтитула (footer, подвал, как удобно) в шаблон docx. Ранее задача была заполнить docx файл с нужными данными, эту задачу я решил по методу автозаполнения шаблонов Заполнение шаблона Word (docx) на сервере без сторонних ПО.

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

Так как все мои методы манипуляции с docx файлом работали через http-сервисы, мне нужно было сделать все с минимальным весом. Обращение куда-то, поднятие отдельных сервисов вообще не рассматривались, хотя были интересные методы на python. Головной болью являлись картинки в колонтитулах, о них никто не упоминал (именно по методу XML разбора), везде только текст, а мне еще QR надо было как то присобачить.

Весомую информацию взял с этой статьи Habr. Как я разбирал docx с помощью XSLT. Связи этих самых колонтитулов хорошо описаны в этой статье.

Картинку я добавил как image0.png, в нужных файлах описаны связи этой картинки.

Алгоритм выполнения:

1. Распаковка docx файла;

2. Проверка существующих нижних колонтитулов;

3. Добавление своих файлов для нижнего колонтитула:  

     - footer0.xml (заранее подготовленный footer)

     - footer0.xml.rels (связи)

     - image0.png (картинка, в моем случае QR код), у вас может быть логотип и т п.

4. Удаление файлов старого колонтитула.

5. Добавление данных в файлы:

     - [Content_Types].xml

     - document.xml.rels

     - document.xml

6. При выполнении 5 п. заодно удалить связи прежних колонтитулов.

7. Запаковать docx файл.

На данный момент с помощью этого метода в моей конфигурации реализована верификация подписанных документов по QR коду. При добавлении колонтитула запрашивается идентификатор документа, а также генерируется новый QR код где зашифрована ссылка на проверку документа.

Для вашего удобства все это дело положил в обработку, за исключением формирования картинки QR. В обработке статичная картинка для демонстрации. Найти методы формирования QR не сложно если надо. Колонтитул добавляется на все существующие страницы документа. Добавляемый footer можно без проблем переделать на свой вариант. А также обработку легко можно переделать на добавление верхнего колонтитула.

Демонстрация:

1. В обработке указываем нужный docx файл куда нужно добавить ваш нижний колонтитул, нажимаем "добавить footer"

 

 

Файл до обработки:

 

 

2. Новый файл с колонтитулом сохраняется с именем файла _+footer.docx

Файл после обработки:

 

 

Приложенная обработка универсальна, подойдет для любых конфигураций на управляемых формах. Демонстрация проведена на платформе 8.3.21.1674, в моей конфигураций крутится все на 8.3.21.1624.

колонтитул подвал footer word docx макет обработка

См. также

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    124620    681    389    

732

SALE! 15%

[ED3] Обмен для ERP 2.5, КА 2.5, УТ 11.5 БП 3.0, Розница, УНФ и других с EnterpriseData (универсальный формат обмена), правила обмена

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

25080 руб.

12.06.2017    135466    729    291    

391

Перенос данных из УПП 1.3 в БП 3.0. Переносятся документы (обороты за период), справочная информация и остатки

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.223.x) и БП 3.0 (3.0.149.x). Правила подходят для версии ПРОФ и КОРП.

28000 руб.

15.12.2021    20543    136    38    

93

SALE! 10%

Перенос данных из ERP 2 / КА 2 / УТ 11 в БП 3.0. Переносятся документы, начальные остатки и справочники

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос данных из ERP в БП 3 | из КА 2 в БП 3 | из УТ 11 в БП 3 | из ЕРП в БП 3 | В продаже с 2019г. | Воспользовались более 176 предприятий! | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой, обращайтесь!

38500 34650 руб.

15.04.2019    68764    179    139    

111

Перенос данных из УТ 10.3 в УТ 11.5. Переносятся документы (обороты за период), справочная информация и остатки

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 10 1С:Управление торговлей 11 Россия Управленческий учет Платные (руб)

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3 (10.3.87.x) и УТ 11.5 (11.5.16.x).

28000 руб.

23.07.2020    46696    199    64    

162

Infostart PrintWizard

Пакетная печать Печатные формы Инструментарий разработчика Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

18000 руб.

06.10.2023    7722    24    6    

42

SALE! 10%

Перенос данных из ERP 2 / КА 2 в ЗУП 3. Переносятся остатки, документы и справочники

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из ERP в ЗУП 3 | из КА 2 в ЗУП | Воспользовались более 79 предприятий! | Предлагаем приобрести готовые правила конвертации данных (КД 2) для переноса остатков, документов с движениями и справочной информации 3 | В продаже с 2020г. | Оперативно обновляем правила до актуальных релизов 1С | Есть перенос начальной задолженности по зарплате и начальной штатной расстановки на выбранную дату | Обороты за прошлые годы (данные для расчета среднего) переносятся свернуто в документ "Перенос данных" | Есть фильтр по организациям | Документы за текущий период переносятся сразу с движениями, поэтому не потребуется делать перерасчеты | Перенос можно проверить перед покупкой, обращайтесь!

48278 43450 руб.

03.12.2020    34375    81    58    

78

SALE! 10%

Перенос данных из БП 3.0 в УНФ 3.0 / УНФ 1.6. Переносятся остатки, документы и справочная информация

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

В продаже с 2018г. | Воспользовались более 41 предприятия! | Правила конвертации (КД 2) для переноса данных из БП 3 в УНФ | Переносятся все виды документов, начальные остатки и вся возможная справочная информация | Есть фильтр по организациям | Оперативно обновляем на новые релизы | Оказываем техподдержку | В комплект файлов входит инструкция, авторская версия обработки "Универсальный обмен...", актуальные правила переноса данных и архив старых версий переноса | Учет в БП 3 должен быть корректным, некорректные данные не переносятся | Можно бесплатно проверить на вашем сервере до покупки!

50722 руб.

10.07.2018    67683    41    122    

46
Комментарии
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. CheBurator 3119 12.02.23 18:49 Сейчас в теме
Высота колонтитула в документ должна быть сделана заранее?
Что будет если колонтитул текстовка и графика не влазит в отведенный колонтитул?
2. aibasoft 10 12.02.23 19:38 Сейчас в теме
(1) 1. высоту своего footer-а задаете в заранее подготовленный footer0.xml.
2. В таком случае чутка криво будет отображаться, но если через линейку подтянете нужную высоту то все будет ок. Есть файл document.xml, при формировании в word-е там учитывается отведенный размер для колонтитулов, думаю при желании в этом файле также можно подкорректировать, но мне этого не нужно было.
Я делаю колонтитулы исходя из стандартной высоты, все мои шаблоны со стандартным размером колонтитулов. Например шаблон пример для демонстрации я просто скачал откуда то, там тоже стандартный размер, проблем не было.
В любом случае ошибки формирования не будет. Но если вам нужно в какой то нестандартный документ добавить, то соответственно размер заранее подготовленного подвала должен соответствовать.
3. CheBurator 3119 12.02.23 20:52 Сейчас в теме
(2)
размер заранее подготовленного подвала должен соответствовать.

ну представь, тебе приходят документы и вместо того чтобы тупо всунуть туда колонтитул - ты предлагаешь сначала документ подогнать... масло масленое. так неинтересно. Вся засада в том, что в документе под колонтитул 1,5 см, а колонтитул который надо внедрить - 2,5 см. причем адски хочется чтобы текст не наезжал на колонтитул - в результате внедрения колонтитула высотой 2.5 см - все правильно будет? ворд переформатирует?
4. aibasoft 10 12.02.23 21:46 Сейчас в теме
(3) специально для вас выяснил. Если свой большой footer добавить в документ где footer меньше добавляемого, то футер норм встает(скидывает текст в след страницу), а если в конце страницы будет картинка или диаграмма то да, ваш футер заедет под него.
Но решить проблему легко:
Когда пишете свой заранее подготавливаемый большой footer, надо будет подсмотреть в этом документе (в файле document.xml) размер атрибута w:footer в узле w:pgMar. Пробовал проставить его в обрабатываемый док, встает нормально. Через код также не составит труда.
Ну получается если хотите нестандартные размеры колонтитула то придется делать такие манипуляции, а со стандартным как у меня никаких дополнительных действии не требуется.
5. CheBurator 3119 12.02.23 22:33 Сейчас в теме
(4)
надо будет подсмотреть в этом документе (в файле document.xml) размер атрибута w:footer в узле w:pgMar.

- ну это хорошо если у тебя идут доки потоком однотипные. а если вариативность есть - все сразу сложнее становится. Смысл автоматизации если "подсмотреть" надо? ;-)
.
Но спасибо за исследования! и для себя полезное прояснили.

ЗЫ. а вообще с этим документооборотом на основе вордов/экселей - концепция в корне неправильная. Это все из древности идет. когда все на визуальной интерактивной работе было построено. Все эти ворды - нафиг не нужны. достаточно протсейщей логической разметки текста. а понапихали туда в итоге не пойми что... ;-)
6. CheBurator 3119 12.02.23 22:38 Сейчас в теме
..вдогонку: пришли ко мне - надо ЭДО с клиентами сделать! Идея здравая, но в частности - нахрена? Ну типа надо... Да пофиг говорю ваше эдо. Что бы вы не отправляли по эдо - на складе все равно будут принимать по БУМАЖНОЙ ПЕРВИЧКЕ, которой вы по договору с клиентом обязаны сопровождать каждую отгрузку, бо клиент сам по себе, а склад у него где-то у третьего лица на отсосинге. И что мы получим в результат? Забабахаем ЭДО (на клюшках), при этом останется бумага подписанная, и вы потом забодаетесь с клиентом выяснять где правда, а так как вы прогибаетесь под клиента то все выяснения он скинет на нас и будете биться лбом об бетон... Так и не стал делать, потому что в автоматизации должен смысл быть. А не автоматизация ради автоматизации.
.
сорри...
7. aibasoft 10 13.02.23 07:19 Сейчас в теме
(6) Здесь у меня ситуация чутка другая. ЭДО сделано для внутреннего пользования. Сотрудники компании раскиданы по всей стране и элементарно когда человек хочет выйти в отпуск, написать заявление на получение мат помощи, на командировку (и.т.п. шаблонов более 30 шт.) и он дергает кадровика, который находится в другом городе на удаленке. Этот кадровик лопатит все эти приказы в word-e на основе заявления, ручками подписывает у шефа, а до шефа еще мастера, начальники чего то там. После всех подписей получают бухи и отрабатывают по своей части. Согласитесь, не весело. Чтобы все это дело как то упростить, удаленно подписывать с ЭЦП, оперативно отрабатывать приказы, решили через ЭДО все пустить. Нормативные документы создали чтобы все это было легитимно.
А QR проверка документов который у меня в задачах был, создали для сотрудников "прокуроров", которые никак не могли принять факт того что документ подписан с помощью ЭЦП, потому что всегда работали бумажно. А сервис как раз покрывает их "хотелки".
Конечно же ЭДО не полностью покрывает бумажку, так как есть документы которые уходят на внешку, но они также предварительно согласовываются внутри компании разными спецами. В общем как инструмент для покрытия бюрократических потребностей устраивает.
Как то так...
CheBurator; +1 Ответить
Оставьте свое сообщение