Была у меня как-то задача печатать из 1С файлы PDF с добавлением на форму определенного текста. Долго ломал голову как это сделать бесплатно и с минимальными трудозатратами. В итоге натолкнулся на шикарную консольную утилиту PDFtk Server, которая много чего умеет делать с документами PDF. Скачать программу и почитать о ее возможностях (на английском) можно на официальном сайте. Меня же интересовала возможность заполнить поле на форме документа нужным мне текстом, используя встроенный язык платформы 1С:Предприятие. В процессе создания нужных мне процедур и функций возникло огромное количество нюансов. Например, была проблема с записью кириллицы, т.к. PDFtk Server не поддерживает символы, выходящие за пределы таблицы кодировки ASCII. В итоге я все победил, и механизм получился довольно красивый, на мой взгляд.
Вкратце работает это так:
1. Сначала формируем служебный текстовый файл со структурой полей PDF-документа и заполненными значениями с помощью PDFtk Server.
2. Из файла получаем таблицу с типами, именами полей и значениями.
3. Работаем с таблицей: изменяем/добавляем интересующие нас значения.
4. Формируем служебный файл XFDF с полями и значениями для заполнения формы PDF.
5. С помощью утилиты PDFtk Server, используя служебный файл из п. 4, формируем новый файл PDF с уже заполненными значениями.
Данный механизм я облачил в форму обработки, которая позволяет заполнить некий произвольный файл PDF, выбранный с диска. Обработка сама по себе имеет не столько прикладное значение, сколько учебно-показательное, хотя со своей задачей вполне справляется, и вы действительно можете прочитать/изменить/записать поля в каком-то выбранном вами PDF-файле. Главное: то, что код, написанный в модуле объекта вы можете использовать в каких-то своих реальных проектах.
Для работы обработки необходимо лишь установить утилиту PDFtk Server, которую можно скачать с официального сайта проекта по этой ссылке. Текущая версия программы - 2.02, и она очень давно уже не менялась. Единственный важный нюанс: при установке на заверщающем этапе необходимо установить флаг "Add application directory to your environmental path", после чего утилита запишет свой путь в переменную окружения. Это необходимо для того, чтобы можно было универсально получать путь в коде, и утилита была доступна по имени из командной строки. После установки PDFtk Server, машину нужно обязательно перезагрузить.
Обработка сделана на обычных формах, но ее можно легко адаптировать под управляемые. Возможно я сам сделаю это позже. Тестировал на нескольких файлах PDF с полями, взятых из интернета.