В процессе автоматизации документооборота часто возникает задача наложить на уже сформированный PDF-файл дополнительную информацию: штамп согласования, резолюцию руководителя, регистрационный номер или статус документа. Выясним причину, почему это вызывает сложности в 1С, и разберем по шагам надежные способы реализации этой задачи.
Платформа 1С:Предприятие не содержит встроенных механизмов для прямого парсинга и редактирования готовых сторонних PDF-документов. Объект ТабличныйДокумент позволяет экспортировать данные в формат PDF методом Записать(), но не предоставляет возможностей по открытию готового PDF-файла для послойной модификации или вставки надписей по заданным координатам.
Если печатная форма генерируется непосредственно в вашей конфигурации, проще всего добавить штамп еще на этапе заполнения макета до выгрузки в файл. Однако если исходный документ поступил из внешней системы или уже сохранен на диске, требуется использовать специализированные внешние инструменты.
Рассмотрим подробнее наиболее популярный и проверенный способ — использование бесплатной кроссплатформенной консольной утилиты PDFtk. Данный инструмент умеет объединять страницы, извлекать метаданные и накладывать один PDF-документ поверх другого в качестве фонового водяного знака (background) или переднего слоя (stamp).
Алгоритм решения строится следующим образом:
ТабличныйДокумент, содержащий только текст резолюции (например, «Согласовано. Иванов И.И.») в требуемом месте страницы на прозрачном фоне.Посмотрим на пример формирования команды для PDFtk через вызов из 1С:
// Пути к файлам
ПутьPDFtk = "pdftk"; // или полный путь к исполняемому файлу pdftk.exe
ИсходныйФайл = """C:\Temp\Doc_Source.pdf""";
ФайлШтампа = """C:\Temp\Stamp_Overlay.pdf""";
ИтоговыйФайл = """C:\Temp\Doc_Result.pdf""";
// Формируем команду наложения штампа поверх исходного документа
ПараметрыКоманды = ИсходныйФайл + " stamp " + ФайлШтампа + " output " + ИтоговыйФайл;
// Запуск внешней утилиты через платформу 1С
ЗапуститьПриложение(ПутьPDFtk + " " + ПараметрыКоманды, , Истина);
Проанализируем параметры утилиты:
Если на сервере нежелательно формировать промежуточные PDF-файлы макетов, рассмотрим альтернативные варианты решения:
При внедрении механизма наложения резолюций обратите внимание на следующие особенности:
ЗапуститьПриложение является наиболее надежным и универсальным решением.