Как в 1С реализовать печать текста поверх готового бланка или сертификата?

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

При разработке печатных форм часто возникает задача вывода данных поверх уже готового графического бланка, диплома или сертификата качества, предоставленного в формате PDF. Разберем основные подходы к решению этой задачи в платформе 1С:Предприятие, проанализируем встречающиеся технические сложности и выясним, как их обойти.

Способ 1. Использование макета Active Document (Microsoft Word)

Один из наиболее распространенных способов — создание макета типа Active Document (документ Microsoft Word), куда в качестве фона помещается изображение исходного бланка, а поверх него накладываются заполняемые поля.

Рассмотрим по шагам, как правильно настроить такой макет:

  1. Конвертируем исходный PDF-файл в растровое изображение высокого качества (с разрешением не менее 300 DPI для четкой печати).
  2. Создаем в конфигураторе 1С макет типа Active Document (документ Word).
  3. Вставляем изображение на страницу документа и настраиваем его обтекание: выбираем параметр «За текстом» (Behind Text), растянув рисунок на весь формат листа А4.
  4. Поверх изображения размещаем текст с параметрами замены или специальные поля.

Проблема с тусклым фоном (подложкой): если вставлять изображение через штатный механизм подложки Word, оно автоматически становится бледным. Это происходит из-за включенного режима обесцвечивания (Washout = True). Чтобы вернуть оригинальные яркие цвета, необходимо в свойствах подложки снять флаг «Обесцветить» либо в режиме редактирования колонтитула сбросить параметры яркости рисунка.

Проблема с заменой текста внутри фигур: если текст с параметрами помещен внутрь автофигуры или текстового блока (TextFrame), стандартный метод Find.Execute, вызванный для основного текста (ActiveDocument.Content), не найдет нужные метки. Фигуры располагаются в отдельном графическом слое документа.

Посмотрим на способы решения этой проблемы:

  1. Использование закладок (Bookmarks): размещаем закладку внутри фигуры или в основном тексте поверх фона и программно заполняем ее значение:
    
    ДокументWord = Макет.Получить();
    ДокументWord.Bookmarks("НомерСертификата").Range.Text = "№ 12345/2024";
    ДокументWord.Bookmarks("НаименованиеТовара").Range.Text = "Кабель силовой ВВГнг";
    
  2. Обход коллекции фигур: перебираем все объекты Shapes документа и выполняем замену текста непосредственно внутри текстового диапазона рамки:
    
    Для Каждого Фигура Из ДокументWord.Shapes Цикл
        Если Фигура.TextFrame.HasText = -1 Тогда
            Поиск = Фигура.TextFrame.TextRange.Find;
            Поиск.ClearFormatting();
            Поиск.Execute("{Номер}", , , , , , , , , "12345", 2);
        КонецЕсли;
    КонецЦикла;
    

Способ 2. Реализация через Табличный документ 1С

Использование встроенного Табличного документа позволяет избежать зависимости от сторонних офисных пакетов (MS Word) и работает как на Windows-, так и на Linux-клиентах, а также на сервере.

Разберем особенности настройки макета табличного документа:

  1. Вместо глобального свойства фоновой картинки макета рекомендуется использовать объект РисунокТабличногоДокумента с типом «Картинка». Это позволяет точно позиционировать подложку по миллиметрам или привязать ее к координатам ячеек.
  2. Для ячеек с выводимым текстом обязательно устанавливаем прозрачный фон, чтобы они не перекрывали фоновый рисунок сертификата.
  3. Для исключения смещения сетки при печати на принтере в свойствах страницы табличного документа жестко фиксируем нулевые поля и задаем масштаб «По ширине листа» или «100%»:
    
    ТабДок = Новый ТабличныйДокумент;
    ТабДок.ПолеСлева = 0;
    ТабДок.ПолеСправа = 0;
    ТабДок.ПолеСверху = 0;
    ТабДок.ПолеСнизу = 0;
    ТабДок.АвтоМасштаб = Истина;
    

Способ 3. Векторное наложение (PDF Stamp)

Если требуется идеальное типографское качество без растеризации оригинального бланка, проанализируем вариант двухслойного наложения PDF:

  1. В 1С формируется печатная форма, содержащая только динамические данные (текст, номера, даты), спозиционированные по координатам бланка.
  2. Табличный документ сохраняется во временный PDF-файл.
  3. Через внешнюю утилиту работы с PDF выполняется операция наложения сформированного текстового слоя на оригинальный векторный PDF-шаблон сертификата.
← На главную