При разработке печатных форм часто возникает задача вывода данных поверх уже готового графического бланка, диплома или сертификата качества, предоставленного в формате PDF. Разберем основные подходы к решению этой задачи в платформе 1С:Предприятие, проанализируем встречающиеся технические сложности и выясним, как их обойти.
Один из наиболее распространенных способов — создание макета типа Active Document (документ Microsoft Word), куда в качестве фона помещается изображение исходного бланка, а поверх него накладываются заполняемые поля.
Рассмотрим по шагам, как правильно настроить такой макет:
Active Document (документ Word).Проблема с тусклым фоном (подложкой): если вставлять изображение через штатный механизм подложки Word, оно автоматически становится бледным. Это происходит из-за включенного режима обесцвечивания (Washout = True). Чтобы вернуть оригинальные яркие цвета, необходимо в свойствах подложки снять флаг «Обесцветить» либо в режиме редактирования колонтитула сбросить параметры яркости рисунка.
Проблема с заменой текста внутри фигур: если текст с параметрами помещен внутрь автофигуры или текстового блока (TextFrame), стандартный метод Find.Execute, вызванный для основного текста (ActiveDocument.Content), не найдет нужные метки. Фигуры располагаются в отдельном графическом слое документа.
Посмотрим на способы решения этой проблемы:
ДокументWord = Макет.Получить();
ДокументWord.Bookmarks("НомерСертификата").Range.Text = "№ 12345/2024";
ДокументWord.Bookmarks("НаименованиеТовара").Range.Text = "Кабель силовой ВВГнг";
Shapes документа и выполняем замену текста непосредственно внутри текстового диапазона рамки:
Для Каждого Фигура Из ДокументWord.Shapes Цикл
Если Фигура.TextFrame.HasText = -1 Тогда
Поиск = Фигура.TextFrame.TextRange.Find;
Поиск.ClearFormatting();
Поиск.Execute("{Номер}", , , , , , , , , "12345", 2);
КонецЕсли;
КонецЦикла;
Использование встроенного Табличного документа позволяет избежать зависимости от сторонних офисных пакетов (MS Word) и работает как на Windows-, так и на Linux-клиентах, а также на сервере.
Разберем особенности настройки макета табличного документа:
РисунокТабличногоДокумента с типом «Картинка». Это позволяет точно позиционировать подложку по миллиметрам или привязать ее к координатам ячеек.
ТабДок = Новый ТабличныйДокумент;
ТабДок.ПолеСлева = 0;
ТабДок.ПолеСправа = 0;
ТабДок.ПолеСверху = 0;
ТабДок.ПолеСнизу = 0;
ТабДок.АвтоМасштаб = Истина;
Если требуется идеальное типографское качество без растеризации оригинального бланка, проанализируем вариант двухслойного наложения PDF: