Содержание
Методы передачи печатных документов
Для передачи печатной копии документа вместе с информацией об электронных подписях, можно использовать следующие подходы:
- Печать отдельного листа согласования
- Подписание внутри формата и вставка в текст изображения рукописной подписи
- Вставка в текст штампа ЭП
Печать листа согласования использует давно и во многих процессах. Лист согласования легко реализуется в виде отчета. Но, не во всех процессах рационально печатать отдельный лист согласования. Например, для служебных записок, в большинстве являющихся одностраничными документами. Кроме того, лист согласования не является неотъемлемой частью документа и может быть потерян или подделан.
PDF формат позволяет устанавливать ЭП на содержание документа и визуализировать их в виде вставленного изображения подписи в текст. При этом, подписи сохраняются в теле файла. Это красивый вариант подписания, но он не совместим с системой DIRECTUM, так как DIRECTUM не обладает инструментами для работы с такими подписями, а подписание в системе блокирует документ от изменения и не позволяет подписать ту же версию внутри формата.
При печати документа со штампом с информацией об ЭП, штамп становится неотъемлемой частью документа. Штамп не требует печати дополнительных листов. Однако, штампы сложны в реализации. Формирование штампа — не тривиальная задача. Каждый формат документа имеет свою внутреннюю структуру, свои приложения редакторы и требует отдельного обработчика для вставки штампа.
Задача
Требуется реализовать возможность печати версии документа со штампом, сформированным в СЭД DIRECTUM на основе электронных подписей на ней. Механизм должен иметь поддержку основных форматов, используемых в документообороте. Штамп должен вставляться в виде изображения, что бы уменьшить вероятность его изменения и подлога. Штамп должен содержать информацию об электронных подписях на конкретной версии документа, её идентификатор и ФИО пользователя, сформировавшего штамп. Штамп должен сохранять возможность прочтения текста документа.
Проблемы реализации
На момент начала работ над данным функционалом у нас действовала система DIRECTUM версии 4.9.1. Во многом это повлияло на выбор инструментов и методов реализации. Так, механизм формирования штампов появился только в версии 5.0 и он поддерживает работу только с PDF документами.
Так же, следовало решить следующие проблемы:
- Требуется обеспечить работу с основными офисными форматами (RTF, DOC, DOCX, XLS, XLSX и т.д.) и форматом PDF документов. Для каждого формата документа используется свой подход вставки изображения и поэтому требуется разработать как минимум 3 процедуры вставки штампов: в редактор Word, в редактор Excel и в PDF документ.
- Штамп должен динамически создаваться в формате изображения. Что бы сохранить читаемость текста, фон штампа должен быть прозрачным.
- Штамп не может быть сохранен в виде версии документа, так как вставка штампа — это изменение содержания документа, а подписанный документ в системе запрещено изменять.
- Штамп не может быть динамически вставлен в текст при каждом открытии документа, так как в СЭД DIRECTUM нет возможности выполнить дополнительный программный код при открытии документа. Кроме того, просмотр документа может происходить разными способами: предпросмотр, экспорт и открытие, открытие из системы и т.д.
- Так как штамп нельзя сохранить в документе в системе и нельзя каждый раз вставлять при просмотре документа, требуется найти удобный способ запуска этого механизма.
- Не всегда все подписи требуется отображать в штампе. Подпись на некоторые документы может поставить любой пользователь системы с зарегистрированным сертификатом ЭП, при этом, не являясь для него согласующим или утверждающим лицом.
Описание решения
Механизм печати со штампом было решено реализовывать как дополнительный функционал в виде кнопки на карточке документа. Позже, после перехода на версию DIRECTUM 5.2.1, была добавлена возможность формировать штамп с помощью пункта контекстного меню.
![](/wp-content/uploads/1584/tmp-cea44173-f50c-404d-8f19-696935e9d128.jpg)
Получение штампа
Штамп должен формироваться динамически, так как содержит информацию, характерную конкретной версии документа и ФИО пользователя, формирующего штамп. Желательно штамп отделить от текста документа рамкой, что бы текст штампа не сливался с текстом документа. Так же желательно вставить в штамп логотип корпорации. Такое форматирование можно описать в виде HTML документа.
Штамп необходимо формировать в виде изображения. Это с одной стороны упростит вставку штампа в различные форматы документов, а с другой, усложнит процесс подлога штампа. На штампе необходимо писать ФИО того, кто распечатал штамп, дату печати и оставлять место для подписи. Рукописная подпись в штампе подтверждает достоверность распечатанной информации.
Для преобразования HTML документа в изображение используется утилита «CutyCapt». Эта консольная утилита может преобразовывать HTML страницу в файлы формата PNG, SVG, PDF и другие. В данном решении производится преобразование HTML страницы в PNG файл с белым фоном и синим штампом.
![](/wp-content/uploads/1584/tmp-dbd36835-b7dd-4f4f-8586-1ae9f8036cb3.jpg)
Прозрачность фона
Полученный штамп имеет непрозрачный белый фон. Если вставлять его в документ, то штамп может перекрывать текст. Для сохранения текста в читаемом виде, требуется изменить штампу фон на прозрачный. Поиск утилит в интернете для установки прозрачности изображения в зависимости от цвета не дал результата. Поэтому, было решено реализовать такую утилиту собственными силами.
Для создания утилиты была использована C++ библиотека «libpng», С++ компилятор «Dev C++». Утилита «setTransparency» принимает PNG изображение и меняет его, устанавливая прозрачность каждому пикселю в зависимости от того, насколько близко его цвет к белому.
![](/wp-content/uploads/1584/tmp-3fe22280-b5e0-49fc-b003-ac9b6cb6a0f8.jpg)
![](/wp-content/uploads/1584/tmp-70b0029b-7a77-419a-9c2b-48f8b5325c2c.jpg)
Вставка штампа в редакторе MS Word
Для вставки штампа в Word используется его объектная модель. Сильно помог материал Евгения Валькова. За основу взята его функция вставки изображения в Word. Система настроена на вставку штампа в верхний левый угол, но перед печатью пользователь может перенести штамп в более удобное место.
![](/wp-content/uploads/1584/tmp-ba14263e-efb9-4cf0-a0ba-066927f3c629.jpg)
Вставка штампа в редакторе MS Excel
Вставка изображения в Excel производится так же, как и в Word, через объектную модель приложения с учетом его особенностей.
![](/wp-content/uploads/1584/tmp-cde57d7e-cb71-4dad-9c70-48876b404e50.jpg)
Вставка штампа в документы формата PDF
Вставка изображения в PDF документы появилась уже после перехода на версию DIRECTUM 5.2.1 и производится стандартным функционалом с помощью функции AddImageToPDFFile. Система настроена на вставку штампа в верхний левый угол документа.
![](/wp-content/uploads/1584/tmp-96cd4eef-8a48-4d96-abc3-ce32cb72938d.jpg)
Интерфейс механизма
На начальном этапе разработки получить документ со штампом можно было через кнопку на карточке документа. Это не очевидный и не удобный способ. После перехода на версию DIRECTUM 5.2.1 кнопка «Печать со штампом» была размещена в контекстном меню документа. Это позволило удобно и быстро вызывать данный функционал.
У документа может быть несколько подписанных версий разных форматов. Механизм «печати со штампом» составляет список подписанных ЭП версий, с форматами которых он может работать. Если таких больше 1, то он предоставляет выбор пользователю, какую версию следует отобразить со штампом. Если таких версий нет, то пользователь получает сообщение об этом.
![](/wp-content/uploads/1584/tmp-2be09737-c789-44f9-94f8-4811faec1d5b.jpg)
После выбора версии, формируется список подписей и пользователь может выбрать, какие ЭП надо отобразить в штампе. На следующем этапе производится формирование документа со штампом и его отображение на экране.
![](/wp-content/uploads/1584/tmp-8c9d8f8c-3d33-4c94-b2c7-2a502e8eae2d.jpg)
Результаты применения решения
Применение данного механизма не ограничивается программно какими-либо маршрутами, процессами или документами, но можно выделить процессы, в которых он наиболее активно используется:
- Электронное согласование служебных записок в DIRECTUM появилось уже давно. Теперь, при распечатке СЗ можно отобразить на ней факт согласования теми или иными службами без дополнительного листа согласования.
- В 2016 году введен процесс электронного утверждения договорных документов между ВСМПО и дочерними организациями. Фактом утверждения являются ЭП с признаком «Утверждающая» представителей ВСМПО и дочерней организации. При передаче пакета договорных документов в электронном виде в налоговую, эти документы выгружаются и сохраняются со штампом. Для этого были сделаны доработки в системе «КАС Бизнес Люкс» и в сценарии «Экспорт договорных документов».
- ПВК (Протокол выбора контрагента) согласуются в DIRECTUM с 2014 года. Введена обязательность ЭП в маршруте согласования. При передаче пакета договорных документов на подпись генеральному директору, ПВК печатается со штампом.
Планы и возможности развития
- На данный момент идет внедрение механизма автоматизации процесса управления служебными записками. Этот механизм позволит создавать служебные записки на основе шаблона и направлять их на электронное согласование с руководителем подразделения. Его использование ещё больше расширит применение штампов в служебной записке. Об этом механизме рассказано в этой статье.
- Существует возможность реализовать сценарий для интеграции с другими системами. Сценарий мог бы формировать файл со штампом на основе ИД документа DIRECTUM. Это позволит формировать документы со штампом из других систем.
- Планируется реализовать электронное согласование и утверждение договорных документов с TISA (дочернее общество в Швейцарии). Штампы так же будут востребованы при направлении таких документов в налоговую или на аудит
Состав участников.
Исполнители:
Колесов А.Д. Разработка проектных решений.
Тарасов М.В. Разработка программной части.
Максимова Т.В., Светлолобова Е.О., Андреева Л.С., Туктарова А.В. Внедрение и сопровождение.
Источник