Установка штампа при печати файлов на каждой странице 1с документооборот

Обновлено: 04.07.2024

Добрый день. 1с вставка регистрационного штампа в pdf. В docdocx без проблем, штамп проставить можно типовыми средствами, а какими же лопатами копать яму для pdf и еще более интересно jpeg ? Я что-то даже ума не приложу.

В табличный документ вставить картинку, сохранить как PDF. Вариант?

Хотя это не обнадеживает --> ТабличныйДокумент (SpreadsheetDocument) Записать (Write) Синтаксис: Записать(<ИмяФайла>, <ТипФайлаТаблицы>) Параметры: Тип: Строка. Имя файла, в котором сохраняется табличный документ. Тип: ТипФайлаТабличногоДокумента. Формат, в котором будет сохранен табличный документ. Значение по умолчанию: MXL. Описание: Записывает табличный документ в файл. Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер). Примечание: При работе на сервере, веб-клиенте или через внешнее соединение нет возможности сохранять в формате XLS95. Не поддерживается сохранение в PDF картинок типа Метафайл. При работе на веб-клиенте вызов метода выполняет обращение к серверу. При работе на мобильной платформе возможно сохранение только в форматах MXL и PDF. При выводе в формат PDF шрифты, которые нельзя внедрять, а также шрифты, не являющиеся TrueType или OpenType, будут заменены на шрифт Arial. Если данный шрифт не обнаружен, то будет использован шрифт Helvetica.

Есть сам вложенный файл PDF(скан документа) в к примеру входящее письмо. И штамп нужно вставить на титульную страницу PDF :)

и это тоже --> ТипФайлаТабличногоДокумента (SpreadsheetDocumentFileType) PDF (PDF) Описание: Формат файла PDF стандарта ISO 32000-1:2008. При экспорте используются параметры печати, установленные у табличного документа. При записи в файл PDF перенос строк в ячейках документа может быть выполнен с некоторыми отличиями от того, как он выполняется при отображении на экран. Это может повлиять на высоту строк, у которых указана автоматическая высота.

Писать скрипт к внешнему редактору который получит ваш файлик или два и слинкует их, наверно акробат версии проф. это умеет (или с плагинами). Или может как то решить проблему с входящими вложениями (форматом), наверно!?

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

Сразу оговорюсь, что работу коллеги видел, но его метод мне не подошёл по 2-м причинам:

  1. письма приходят разные и место для впечатывания штампа необходимо выбирать вручную (не всегда в определённый угол и не всегда на первый лист документа).
  2. ImageMagick справляется с конвертацией не любых документов формата Adobe Pdf (это боль!).

Как выясняется при внимательном изучении, в 1С:Документооборот уже встроен функционал добавления регистрационного штампа в документ, но работает этот механизм только с файлами MS Office Word и Open Office Writer. А в этих форматах входящие письма редко приходят (примерно никогда), а в основном Adobe PDF или в каких-либо графических форматах.

Всё, что необходимо для решения данной задачи, оказывается, у нас есть. Почти у всех стоит на сервере и настроена такая прекрасная программа, как ImageMagick, соответственно константа ПутьКПрограммеКонвертацииPDF содержит путь к ней. Рекомендую ставить пакет Q8, а не Q16, т. к. работает он шустрее. Рассмотрим алгоритм впечатывания штампа в многостраничный формат (pdf, tiff) с обыкновенными картинками всё проще. Расширение умеет работать с любыми файлами, которые понимает пакет imagemagick.

1. Создаём временную папку и в неё сохраняем файл полистно в графическом формате (я использую jpeg с качеством 100%). Причём ImageMagick текстовый слой совмещает с графическим и получается полноценное изображение (последняя версия на момент написания публикации 7.0.10).

Данная команда создаёт файлы в формате jpeg с разрешением 200 dpi и автонумерацией от «000000» до «999999» в нашем каталоге. Удобство в том, что имя файла первой страницы всегда «image_000000.jpg». Запаса нумерации страниц должно хватить на все случаи жизни.

2. Создаём файл штампа. Тут может быть два решения, через параметр «-draw text x,y”, т. е. вставкой необходимого текста прямо на первую страницу документа или более сложный, но и более универсальный механизм создания штампа отдельно и впечатывания его куда нужно. Я пошёл вторым путём, хотя и с первым тоже поигрался (трудно выравнивать текст).

Эта команда создаёт изображение размером 472х157 (60х20 мм при 200 dpi), с полупрозрачным фоном, синим цветом текста, выровненным по центру, шрифтом Tahoma размером 30 точек и межстрочным интервалом 15 точек и текстом, который лежит в файле text.txt. Я экспериментировал с разными шрифтами, есть очень интересные начертания, хорошо смотрятся на штампе. Можно отсканировать реальный штамп, подобрать шрифт, имитирующий рукописный, и через «-draw text x,y” впечатывать номер и дату. Очень круто, но много возни.

3. Определяем координаты вставки штампа. Тут нам помогает тип «Картинка», который после чтения первой страницы изображения, возвращает нам его размеры. А настройки вставки штампа мы берём из штатного параметра «НастройкиПоложения», который нам приходит из процедуры вставки штампа (мы его совсем немного дополняем). Там простая математика, не буду тут разбирать.

4. Впечатываем штамп.

Команда к файлу «image_000000.jpg» прибавляет файл «stamp.jpg» со смещением 2100 и 3200 точек (для примера) и результат сохраняет в «result.jpg».

5. Собираем результат. Переименовываем «result.jpg» в «image_000000.jpg» собираем все файлы в один.

Команда из файлов image_*.jpg собирает один файл в формате Adobe PDF с понижением качества до 90%.

6. Ну и всё, уже в рамках штатного механизма создаём новую версию файла.

Наименование организации для удобства вынес в новый реквизит справочника «Организации» и разместил на форме.

Теперь про боль. Всё бы ничего, но некоторые документы, приходящие в организацию обрабатывались некорректно. После преобразования в jpeg документ становился серым и в нём пропадала часть текста. Что делать? Оказалось, что есть более специализированный конвертер, написанный в рамках проекта XPDFReader. Он работает быстро и делает изображения в формате PNG с нужным разрешением. Исполняемый файл pdftopng.exe я в расширение не включил (блюдём авторские права), его нужно скачать на сайте разработчика, поместить в макет «ШРВД_ПрограммаКонвертации» и установить в значение «Истина» переменные «ПредварительноКонвертировать» и «ПрограммаКонвертацииВМакете». Можно не в макет помещать, а на диск куда-нибудь сохранить и тогда путь необходимо указать в настройках, а переменной «ПрограммаКонвертацииВМакете» оставить значение «Ложь».

Все основные настройки вынесены в переменные расположенные в начале процедуры «ВставитьРегистрационныйШтампВФайлУказаниемПоложения()» общего модуля «ШРВД_ОбщиегоНазначенияСервер». Там указывается разрешение, размеры штампа, шрифт, его размер и межстрочный интервал.

Расширение разрабатывалось и тестировалось на платформе версии 8.3.17.1851 в конфигурации 1С:Документооборот государственного учреждения, редакция 2.1.28.12.

UPD: 08.02.2021 исправлена ошибка постановки штампа на обычное изображение и появилась возможность делать рамку вокруг штампа.

UPD: 03.07.2021 исправлена ошибка постановки штампа на не первую страницу документа, также мелкие доработки по результатам использования в организации.

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

Сразу оговорюсь, что работу коллеги видел, но его метод мне не подошёл по 2-м причинам:

  1. письма приходят разные и место для впечатывания штампа необходимо выбирать вручную (не всегда в определённый угол и не всегда на первый лист документа).
  2. ImageMagick справляется с конвертацией не любых документов формата Adobe Pdf (это боль!).

Как выясняется при внимательном изучении, в 1С:Документооборот уже встроен функционал добавления регистрационного штампа в документ, но работает этот механизм только с файлами MS Office Word и Open Office Writer. А в этих форматах входящие письма редко приходят (примерно никогда), а в основном Adobe PDF или в каких-либо графических форматах.

Всё, что необходимо для решения данной задачи, оказывается, у нас есть. Почти у всех стоит на сервере и настроена такая прекрасная программа, как ImageMagick, соответственно константа ПутьКПрограммеКонвертацииPDF содержит путь к ней. Рекомендую ставить пакет Q8, а не Q16, т. к. работает он шустрее. Рассмотрим алгоритм впечатывания штампа в многостраничный формат (pdf, tiff) с обыкновенными картинками всё проще. Расширение умеет работать с любыми файлами, которые понимает пакет imagemagick.

1. Создаём временную папку и в неё сохраняем файл полистно в графическом формате (я использую jpeg с качеством 100%). Причём ImageMagick текстовый слой совмещает с графическим и получается полноценное изображение (последняя версия на момент написания публикации 7.0.10).

Данная команда создаёт файлы в формате jpeg с разрешением 200 dpi и автонумерацией от «000000» до «999999» в нашем каталоге. Удобство в том, что имя файла первой страницы всегда «image_000000.jpg». Запаса нумерации страниц должно хватить на все случаи жизни.

2. Создаём файл штампа. Тут может быть два решения, через параметр «-draw text x,y”, т. е. вставкой необходимого текста прямо на первую страницу документа или более сложный, но и более универсальный механизм создания штампа отдельно и впечатывания его куда нужно. Я пошёл вторым путём, хотя и с первым тоже поигрался (трудно выравнивать текст).

Эта команда создаёт изображение размером 472х157 (60х20 мм при 200 dpi), с полупрозрачным фоном, синим цветом текста, выровненным по центру, шрифтом Tahoma размером 30 точек и межстрочным интервалом 15 точек и текстом, который лежит в файле text.txt. Я экспериментировал с разными шрифтами, есть очень интересные начертания, хорошо смотрятся на штампе. Можно отсканировать реальный штамп, подобрать шрифт, имитирующий рукописный, и через «-draw text x,y” впечатывать номер и дату. Очень круто, но много возни.

3. Определяем координаты вставки штампа. Тут нам помогает тип «Картинка», который после чтения первой страницы изображения, возвращает нам его размеры. А настройки вставки штампа мы берём из штатного параметра «НастройкиПоложения», который нам приходит из процедуры вставки штампа (мы его совсем немного дополняем). Там простая математика, не буду тут разбирать.

4. Впечатываем штамп.

Команда к файлу «image_000000.jpg» прибавляет файл «stamp.jpg» со смещением 2100 и 3200 точек (для примера) и результат сохраняет в «result.jpg».

5. Собираем результат. Переименовываем «result.jpg» в «image_000000.jpg» собираем все файлы в один.

Команда из файлов image_*.jpg собирает один файл в формате Adobe PDF с понижением качества до 90%.

6. Ну и всё, уже в рамках штатного механизма создаём новую версию файла.

Наименование организации для удобства вынес в новый реквизит справочника «Организации» и разместил на форме.

Теперь про боль. Всё бы ничего, но некоторые документы, приходящие в организацию обрабатывались некорректно. После преобразования в jpeg документ становился серым и в нём пропадала часть текста. Что делать? Оказалось, что есть более специализированный конвертер, написанный в рамках проекта XPDFReader. Он работает быстро и делает изображения в формате PNG с нужным разрешением. Исполняемый файл pdftopng.exe я в расширение не включил (блюдём авторские права), его нужно скачать на сайте разработчика, поместить в макет «ШРВД_ПрограммаКонвертации» и установить в значение «Истина» переменные «ПредварительноКонвертировать» и «ПрограммаКонвертацииВМакете». Можно не в макет помещать, а на диск куда-нибудь сохранить и тогда путь необходимо указать в настройках, а переменной «ПрограммаКонвертацииВМакете» оставить значение «Ложь».

Все основные настройки вынесены в переменные расположенные в начале процедуры «ВставитьРегистрационныйШтампВФайлУказаниемПоложения()» общего модуля «ШРВД_ОбщиегоНазначенияСервер». Там указывается разрешение, размеры штампа, шрифт, его размер и межстрочный интервал.

Расширение разрабатывалось и тестировалось на платформе версии 8.3.17.1851 в конфигурации 1С:Документооборот государственного учреждения, редакция 2.1.28.12.

UPD: 08.02.2021 исправлена ошибка постановки штампа на обычное изображение и появилась возможность делать рамку вокруг штампа.

UPD: 03.07.2021 исправлена ошибка постановки штампа на не первую страницу документа, также мелкие доработки по результатам использования в организации.

Дата публикации 10.07.2020

Использован релиз 2.1.21

  1. В настройках электронной подписи и шифрования на закладке "Штамп ЭП" установите флажок "Автоматическая вставка отметки об ЭП" и выберите местоположение штампа в документе (меню: Настройка и администрирование – Настройка программы – Общие настройки – Электронная подпись – ссылка "Настроить").


  1. Установите программы ImageMagick и GhostScript на сервере.
  2. Включите настройку "Использовать ImageMagick" (установите соответствующий флажок) и укажите путь к «magick.exe» на сервере (меню: Настройка и администрирование – Настройка программы – Работа с файлами).


  1. В настройках сервиса "Агент сервера 1С Предприятия" установите флажок "Разрешить взаимодействие с рабочим столом".


  1. В карточке документа на закладке "Обзор" выберите нужный файл и откройте его двойным щелчком мыши или по команде "Просмотреть" из контекстного меню.

Файл с наложенным штампом подписи создается автоматически:

  • для docx, odt, pdf – файл создается сразу на сервере;
  • для doc – файл создается на клиенте (только тонкий клиент Windows).

В шаблоне файла doc, docх, odt можно точно определить местоположение штампа, добавив в файл текст "ВставитьЭП". Если в файле нет этого текста, то местоположение штампа будет определено описанными выше настройками.

В конфигурации 1С:Документооборот реализована возможность вставлять штамп электронной подписи в подписанные документы. Однако, в процессе работы может возникнуть необходимость доработать штамп электронной подписи в документе. Как это сделать? Рассказываем.

За вставку подписи в документ отвечают два общих текстовых макета

Первый макет вставляет подпись вместо тега «ВставитьЭП», заданного в документе. Второй макет размещает подпись в соответствии с настройками, заданными в справочнике «Настройки электронной подписи и шифрования». Затем остается выбрать необходимый вариант вставки, например, «Левый нижний угол», или «Правый верхний угол» и т. д.

Рис.1 «ОбщийМакет ВставкаИзображенияВместоТегаВDocx» и «ОбщийМакет вставкаИзображенияЭПСУказаниемПоложенияDocx»

Вставка созданных шаблонов картинки электронной подписи, хранящихся в макете «ШаблонОтметкиЭП»(см. рис. 2), осуществляется с помощью DrawingML. DrawingML — это язык Open XML, предназначенный для определения графических объектов.

Вкратце, в макете нас интересуют 2 параметра cx и cy, которые отвечают за размер изображения. Здесь отмечаем, что значения задаются в EMU (English Metrick Units), которое высчитывается по формуле («РазмерВПикселях»/ 25.4) × 914400.

Рис.2 ОбщийМакет «ШаблонОтметкиЭП»

Далее, в картинку с помощью функции «СоздатьОтметкуЭП()» (см. рис. 3) общего модуля «РаботаСЭП» впечатывается текст с использованием ImageMagick. Настройки использования ImageMagick задаются непосредственно в конфигурации. Сама картинка хранится в формате png и может редактироваться в любом редакторе.

Это нужно, например, для того, чтобы добавить на подпись логотип. Размер текста, содержание, цвет, а также расположение указываются в «СоздатьОтметкуЭП()». Чтобы текст разместился по заданному шаблону, необходимо учитывать, что расположение задается от левого верхнего края.

Рис.3 ОбщийМодуль «РаботаСЭП», функция «СоздатьОтметкуЭП()»

Таким образом, после подписания документа, в зависимости от настроек, в него вставляется штамп электронной подписи.

Читайте также: