Как сохранить табличный документ 1С в PDF без потери качества изображений?

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

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

Понимание природы проблемы

Когда мы вызываем метод Записать у объекта ТабличныйДокумент с указанием типа PDF, встроенный конвертер платформы выполняет ряд операций по оптимизации файла. В процессе этой трансформации 1С приводит графические объекты к определенному разрешению (DPI). Если исходное изображение имеет высокое разрешение, алгоритм сжатия платформы снижает его, чтобы уменьшить размер итогового файла. В результате мы получаем «замыленную» картинку с артефактами сжатия.

Способ №1: Использование виртуальных принтеров

Один из самых надежных способов получить PDF «как есть» — это не использовать штатный метод сохранения платформы, а воспользоваться виртуальным принтером. Печать через такой инструмент позволяет передать на формирование документа данные в том виде, в котором их видит подсистема печати Windows, минуя внутренние алгоритмы сжатия 1С.

Рассмотрим, как это реализовать:

  1. Установите на сервер, где выполняется код, надежный PDF-принтер.
  2. В коде 1С вместо метода Записать используйте объект ТабличныйДокумент и метод Напечатать, предварительно установив имя принтера через свойство ИмяПринтера.

Важно: Этот метод наиболее эффективен в клиент-серверном варианте работы, так как настройка принтера на сервере делает решение доступным для всех пользователей системы.

Способ №2: Оптимизация формата исходных данных

В ходе практических экспериментов было выяснено, что внутренняя конвертация по-разному реагирует на разные форматы исходных графических файлов. Если вы используете PNG с прозрачностью, попробуйте изменить подход:

  1. Замените исходные файлы на формат BMP. Хотя этот формат значительно увеличивает объем документа, он не использует сжатие с потерями, что позволяет платформе при конвертации в PDF работать с «чистыми» данными пикселей.
  2. Проверьте свойство ТочностьПечати у вашего ТабличногоДокумента. Установка значения ТочностьПечати.Точная иногда помогает платформе корректнее распределять элементы по сетке документа, хотя это не является панацеей для растровой графики.

Способ №3: Серверная обработка документов

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

Пример логики работы:


// Сохраняем макет в промежуточный файл
ТабДокумент.Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента.MXL);

// Выполняем внешнюю команду для конвертации на сервере
КомандаСистемы("converter.exe " + ПутьКФайлу + " --output " + ПутьКPdf + " --quality 100");

Такой подход дает полный контроль над параметрами сжатия и глубиной цвета. Мы рекомендуем использовать специализированные библиотеки или утилиты, которые поддерживают сохранение графики без пересжатия (например, с использованием алгоритма LZW или JPEG с качеством 100%).

Рекомендации по подготовке макетов

Чтобы снизить вероятность потери качества, обратите внимание на следующие моменты:

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

← На главную