Как уменьшить размер штампа электронной подписи в 1С:Документооборот 2.1 для файлов DOCX?

Программист 1С v8.3 (Управляемые формы) 1С:Документооборот IT и автоматизация бизнеса
← На главную

При работе в 1С:Документооборот 2.1 пользователи часто сталкиваются с тем, что стандартный штамп визуализации электронной подписи (ЭП) занимает слишком много места в документе или перекрывает важные данные. Особенно это актуально для документов формата DOCX, где используется автоподстановка через тег ВставитьЭП. В данной статье мы подробно разберем, как изменить размеры штампа, отредактировать его внешний вид и реализовать эти изменения правильно — через механизм расширений, чтобы не снимать конфигурацию с поддержки. Для этих задач также есть расширение для управления файлами электронных подписей в 1С.

Анализ механизмов формирования штампа

Для начала проанализируем, как система генерирует штамп. Процесс состоит из нескольких этапов: создание графического изображения (PNG) с текстом подписанта и последующая вставка этого изображения в структуру XML-файла DOCX. Основная логика сосредоточена в общих модулях РаботаСКартинками и ВизуализацияЭПКлиентСервер. Если мы хотим изменить размер, нам нужно воздействовать либо на саму «подложку» (картинку), либо на параметры её контейнера в документе Word.

Способ 1. Изменение размеров через макет DOCX (самый эффективный)

Когда система заменяет тег ВставитьЭП на изображение, она использует специальный XML-шаблон, описывающий свойства графического объекта в формате OpenXML (подобная логика применяется, когда реализуется вставка QR-кода в файлы doc и docx). Рассмотрим по шагам, как изменить эти параметры:

  1. Найдем в конфигураторе общий макет ВставкаИзображенияВместоТегаВDocx.
  2. Этот макет представляет собой XML-код. Нас интересуют атрибуты cx и cy.
  3. Важно понимать, что значения в этих полях указаны в EMU (English Metric Units). Это специфическая единица измерения: 1 см = 360 000 EMU.
  4. Если стандартный штамп кажется вам слишком большим (например, около 8-10 см), рассчитайте нужные пропорции. Для ширины в 6 см вам потребуется установить cx="2160000".

Изменяя эти значения, мы заставляем Microsoft Word принудительно масштабировать вставленное изображение до нужных нам размеров. Однако помните: если исходная картинка-штамп имеет другое соотношение сторон, она может выглядеть растянутой или сжатой. Чтобы избежать этого, можно внедрить визуализацию печати ЭЦП с возможностью точного позиционирования.

Способ 2. Редактирование графической подложки штампа

Если ваша задача не просто уменьшить штамп, но и добавить в него логотип компании или изменить границы (в частности, так настраивается цифровая подпись в Документооборот КОРП 2.1), нам нужно поработать с макетом ШаблонОтметкиЭП. Разберем этот процесс:

  1. Выгружаем общий макет ШаблонОтметкиЭП на диск. Это файл формата PNG с прозрачным фоном.
  2. Открываем его в любом графическом редакторе, поддерживающем прозрачность (например, Photoshop или GIMP).
  3. Добавляем логотип, меняем рамки или уменьшаем холст. Сохраняем файл, обязательно сохраняя альфа-канал (прозрачность).
  4. Загружаем обновленную картинку обратно в систему (желательно через расширение).

После изменения подложки нам может потребоваться скорректировать координаты вывода текста (ФИО, дата, серийный номер). Это делается в процедуре РаботаСКартинками.СформироватьШтампЭП. Проанализируем пример кода, который отвечает за позиционирование текста:


// Пример корректировки координат в модуле РаботаСКартинками
Процедура СформироватьШтампЭП(ПараметрыШтампа) Экспорт
    // Здесь задаются отступы и шрифты
    ТекущийШрифт = Новый Шрифт("Arial", 10);
    // Координаты X и Y определяют, где на картинке начнется текст
    КоординатаX = 50; 
    КоординатаY = 100;
    // ... логика отрисовки текста ...
КонецПроцедуры

Способ 3. Использование расширения (правильный подход)

Многие разработчики опасаются снимать конфигурацию с поддержки. Выясним, как реализовать вышеописанные изменения через расширение (например, так же можно реализовать преобразование doc/docx в PDF). Современная платформа 8.3 позволяет переопределять макеты и методы без правки основной конфигурации.

Шаг 1. Перенос макетов. Добавьте в расширение общий макет ВставкаИзображенияВместоТегаВDocx и ШаблонОтметкиЭП. 1С в первую очередь обращается к объектам расширения. Просто изменив cx и cy в XML макета расширения, вы уже добьетесь результата.

Шаг 2. Перехват функций. Если необходимо программно менять размер в зависимости от условий, используйте аннотацию &Вместо для функций формирования штампа. Посмотрим на примере модуля ВизуализацияЭПКлиентСервер:


&Вместо("ВставитьВизуализациюЭПВместоТэга")
Функция Расш1_ВставитьВизуализациюЭПВместоТэга(ДвДанныеФайла, Расширение, Тэг, ДвоичныеДанныеШтампа, ЧислоПодписей)
    // Здесь можно программно изменить ДвоичныеДанныеШтампа перед вставкой
    // Или вызвать оригинальный метод и программно обработать результат
    Результат = ПродолжитьВызов(ДвДанныеФайла, Расширение, Тэг, ДвоичныеДанныеШтампа, ЧислоПодписей);
    Возврат Результат;
КонецФункции

Особенности для других форматов (PDF и ODT)

Ситуация с PDF отличается. Здесь 1С часто использует внешние утилиты, такие как ImageMagick. Рассмотрим процедуру, упомянутую в обсуждении:

В модуле РаботаСКартинками существует процедура УменьшитьШтамп. Она работает именно с файлами PDF через командную строку ImageMagick. Если штамп в PDF не уменьшается, проверьте, установлена ли данная утилита на сервере и прописаны ли пути к ней в настройках программы.

Для формата ODT (OpenOffice) решение аналогично DOCX, но редактировать нужно общий макет ВизуализацияЭПOpenOfficeВызовСервера.ВставитьШтрихкодВФайлODTВместоТэга. Там размер задается в сантиметрах внутри SVG-контейнера: svg:width="11.198cm". Просто замените это число на нужное вам.

Проблема размытия текста при уменьшении

Проанализируем важный нюанс: при сильном уменьшении штампа текст может стать «мыльным» и нечитаемым. Это происходит потому, что Word сжимает растровое изображение (PNG). Чтобы этого избежать, мы рекомендуем:

  1. Увеличить размер шрифта в коде формирования штампа (процедура СформироватьШтампЭП), чтобы буквы занимали максимум отведенного пространства на подложке.
  2. Использовать шрифты без засечек (например, Arial или Verdana), они лучше сохраняют читаемость при масштабировании.
  3. Если возможно, формируйте штамп сразу в нужном (целевом) разрешении, чтобы Word не применял алгоритмы интерполяции.

Таким образом, мы рассмотрели комплексный подход к изменению размеров штампа ЭП в «1С:Документооборот 2.1». Самым чистым и стабильным решением является использование расширения для переопределения EMU-параметров в XML-макете DOCX. Это гарантирует сохранение возможности обновления программы и точное позиционирование штампа в документах.

← На главную