Экспорт печатных форм в растровое и векторное изображения

27.03.26

Разработка - Инструментарий разработчика

Бывает случай, когда читаешь какую-то статью и вроде интересно, но думаешь, а кому это вообще нужно-то? А потом проходит неделя-другая и ты уже судорожно ищешь ту самую статью, потому что она очень нужна! Спасибо автору https://infostart.ru/1c/tools/2511809/ (Антон Макрушин) за его разработку, очень пригодилась для преобразования в векторные изображения также без установки внешних компонентов (утилита встроена в обработку). Расширил функционал его обработки, запилил в расширение для обработки печатных форм, считаю, что это достойно отдельной публикации

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Экспорт печатных форм и прикрепленных файлов в изображения (расширение)
.cfe 1,52Mb ver:1.0.1
0 3 000 руб. Купить
Экспорт печатных форм в растровое и векторное изображения (обработка)
.epf 1,50Mb ver:1.0.1
0 3 000 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой
Оглавление:

1. Описание процесса получения svg

2. Основные возможности обработки

3. Про перевод скриптов во временное хранилище

4. Адаптация к интерфейсу 8.5

5. Установка

6. Примеры работы

 

1. Процесс получения svg

Не буду рассказывать историю постановки задачи, хотя она могла бы показаться кому-то интересной, скажу только, что потребовалось получить из печатной формы векторное изображение. Были идеи прямого преобразования pdf в svg, но они не дали качества в моем непростом случае (например, та же самая библиотека PDF.js может быть использована и для прямой конвертации в svg, но с ограничениями). Повезло с СПО, нашлась совсем небольшая утилита potrace, которая отлично преобразует изображения, например, bmp в векторную графику. В результата цепочка преобразований такая:

1. Печать табличного документа (печатной формы) в pdf. Здесь в обработке заложена возможность прямого указания размеров страниц, чтобы например, печатать этикетку. Важным параметром может стать масштаб печати (не работает без размеров страницы), поскольку при экспорте pdf-png качество достаточно фиксированное.

2. Разбиение pdf на страницы в формате png. Здесь на первый план выходит Масштаб рендеринга, поскольку растровые изображения в отличие от pdf определяются не размером страниц, а детализацией до пикселей. Рекомендуемый масштаб для растрового изображения не меньше 2, для векторного - от 4 и выше, поскольку преобразование в вектор требует высокого разрешения.

3. Преобразование png в bmp. Здесь используется объект ОбрабатываемаяКартинка, который в своем исполнении применяет imagemagick. Что накладывает определенные ограничения на размер картинки. Не удивляйтесь, если при определенном масштабе рендеринга вы получите ошибку "недостаточно памяти" - bmp могут получаться размером до 1ГБ при размере png в сотни КБ

4. Получение векторного изображения. Запускается утилитка potrace (есть версии под windows и линукс), которая формирует svg, которое уже можно сохранить в папку, скопировать в буфер обмена, ну и просто посмотреть, конечно.

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

 

 

2. Основные возможности обработки:

1. можно экспортировать в png, но можно и в svg

2. для векторного изображения можно задать ширину в дюймах

3. преобразовывать лучше на сервере (быстрее, но может по каким-то причинам кому-то нужно на клиенте - оставил опцией) - влияет на запуск утилиты potrace, ну и само собой передачу большого bmp

4. прямой экспорт в каталог. Сохраняются изображения под уникальными именами, так что можно не беспокоиться за перезапись

5. копирование в буфер обмена (для вставки в почту и мессенджеры, например) - поддерживается с версии 8.3.24 в любом режиме совместимости

6. можно изменить настройки сразу для нескольких имен параметров печати, для которых настройки здесь уже заданы (Задать выбранные настройки)

7. с версии БСП 3.1.6 (4 года назад выпущена) можно обрабатывать также и присоединенные файлы pdf, а также xls, xlsx, mxl. Разумеется для Экселевских файлов важный параметр - размеры страницы.

Расширение добавляет на общую форму печати кнопку и вызывает экспорт в png или svg в зависимости от настроек:

 

 

Если настроен прямой экспорт в буфер обмена или каталог, то в конце отобразится форма, в которой можно Открыть каталог, задать настройки для последующих конвертаций. Закрывается по ESC.

Работает и в веб-клиенте, и на линуксе. На линукс из-за особенностей работы каждый раз выходит предупреждение-вопрос на доступ, но одно и при этом нужно использовать опцию "Загружать скрипты через файлы".

 

3. Перевод скриптов JavaScript на временное хранилище

Поскольку с версии 8.3.27, а может, и раньше при работе объекта ПолеHTMLДокумента стали выходить предупреждения о работе с небезопасными ресурсами (коими считаются все используемые файлы, загружаемые не через интернет/интранет, а также и ресурсы временного хранилища при загрузке страницы из файла), чтобы не беспокоить пользователя этими мелочами было принято решение уходить в прямую подгрузку текста страницы. А поскольку выбранные скрипты не поддерживают задание текстом, то их пришлось выносить во временное хранилище, благо как минимум с версии 8.3.23 (на Windows, на линукс все не так радужно) вебкит уже поддерживает загрузку скриптов из него (загрузка через файлы оставлена опцией для совместимости). Принято-то принято, а реализовать удалось далеко не сразу. Казалось, что один из скриптов подгружается в ресурсы не полностью (смотрел в консоли по Ctrl-Shift-Alt-F12). Однако выяснилось в конце концов, что дело в используемой модели Web Worker (потоковое фоновое выполнение скриптов), которая вебкитом поддерживается только при загрузке из файлов либо из интернета. Но здесь это недоступно. Пришлось помогать 1С распознать Web Worker, для чего пригодился URL объекта (блоба):

var xhr = new XMLHttpRequest();
xhr.open("GET", "АдресСкриптаВоВременномХранилище");
xhr.send();
xhr.onload = function() {
    if (xhr.status != 200) { // анализируем HTTP-статус ответа, если статус не 200, то произошла ошибка
        alert(`Ошибка ${xhr.status}: ${xhr.statusText}`); // Например, 404: Not Found
    } else {
        const workerScript = xhr.response;
        const blob = new Blob([workerScript], { type: 'text/javascript' });
        const workerUrlBlob = URL.createObjectURL(blob);
        pdfjsLib.GlobalWorkerOptions.workerPort = new Worker(workerUrlBlob, {  type: 'module',  });
        ...
        работа скрипта
        ...
    }
};
 

4. Адаптация к интерфейсу 8.5

Поскольку мне довелось проверять обработку на УНФ версии 3.0.13, где можно пощупать интерфейс "Версия 8.5", ее досмотр в новом интерфейсе показал свою несостоятельность, которая была устранена несколькими основными шагами:

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

2. для большинства полей было убрано свойство "Растягивать по горизонтали" (установлено нет)

3. для списка картинок (СписокЗначений) в табличное поле выводилось свойство значение, которое умная система на такси преобразовала в представление. На версии 8.5 это тоже было так до момента, пока вы не тыкали в строку, тогда выделялось текущее поле и отображался адрес временного хранилища, который и является значением. Решилось просто - выводим не значение списка значений, а его представление, новый интерфейс жестче реагирует. Кстати, проверил сегодня - при размещении списка значений на форме в таблицу по умолчанию берется значение, что логично, так что поведение похоже на баг.

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

5. Кстати, полюбовался на компактный режим формы в новом интерфейсе - влезает больше чем в такси по умолчанию! Но для своей формы его ставить не могу, поскольку требуется режим совместимости с 8.5, да и мелко слишком становится на мой вкус

6. Из картинки сделал гиперссылку, чтобы скрывать/отображать массивную здесь верхнюю панель по нажатию

 

5. Установка в конфигурацию

Для интеграции обработки в конфигурацию максимально совместимым способом я подготовил расширение, которое не заимствует формы, а только общие модули, поэтому можете воспользоваться расширением, которое можно установить как из режима предприятия, так и из конфигуратора. Единственное преимущество пути через конфигуратор в том, что вы можете выставить в самом низу свойств конфигурации расширения нужный вам "Режим совместимости" (По умолчанию выставлен 8.3.23 - минимальная платформа на которой проверял) по режиму основной базы, чтобы не выскакивало уведомление при входе в 1С. Не забудьте отключить "Безопасный режим" - для размещения кнопок используются серверные модули. Не буду здесь описывать сам процесс, вы легко найдете его в интернете.

Если же расширение не для вас, то на общей форме печати документов можно легко разместить кнопку, в которой будет вызываться код наподобие этого:

ПараметрыФормы = Новый Структура("ПечатнаяФорма", ТекущаяПечатнаяФорма);
ОткрытьФорму("Обработка.РаботаСPDF.Форма.Форма", ПараметрыФормы);

Где вместо ТекущаяПечатнаяФорма будет реквизит, содержащий табличный документ печатной формы. Проверял на УПП 1.3 - все работает.

Расширение проверено на конфигурациях 1С:Бухгалтерия Учебная 3.0.111, 1С:УНФ Учебная 3.0.13, 1С:Бухгалтерия 3.0.191, 1С:Зарплата и Управление Персоналом 3.1.36. БСП для редактирования присоединенных файлов требуется 3.1.6.118 и выше, для экспорта печатных форм хватает 3.1.5 (может, ниже), на версии 3.2 тоже проверял.

 

6. Примеры работы

Пример рабочего окна, обратите внимание, страницы 2, поэтому окно не закрылось автоматически, первая страница скопирована в буфер обмен

А вот результат преобразования такого же акта с настройками по умолчанию:

Ну и преобразование в SVG с размерами страницы 297х210, масштабом 200, Масштабом рендеринга 4 (можно улучшить качество, это почти минимум). К сожалению, инфостарт не поддерживает svg, как и рабочие в России шеринги фото, так что прикладываю текстом)):

 
 Содержимое файла Страница 1.svg

 

Проверено на следующих конфигурациях и релизах:

  • 1С:Библиотека стандартных подсистем, редакция 3.1, релизы 3.1.6.118
  • Управление производственным предприятием, редакция 1.3, релизы 1.3.196.1

Вступайте в нашу телеграмм-группу Инфостарт

Печатная форма экспорт в изображение векторное изображение табличный документ

См. также

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку одновременно в несколько потоков. А так же автоматически, без непосредственного участия пользователя. Решение в Реестре отечественного ПО

24900 руб.

20.08.2024    63280    277    160    

297

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С:Предприятие 8 Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

16500 руб.

02.09.2020    250747    1390    421    

1145

Пакетная печать Печатные формы Инструментарий разработчика Программист 1С:Предприятие 8 Платные (руб)

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

22570 руб.

06.10.2023    36444    97    40    

116

Инструментарий разработчика Нейросети Платные (руб)

Первые попытки разработки на 1С с использованием больших языковых моделей (LLM) могут разочаровать. LLMки сильно галлюцинируют, потому что не знают устройства конфигураций 1С, не знают нюансов синтаксиса. Но если дать им подсказки с помощью MCP, то результат получается кардинально лучше. Далее в публикации: MCP для поиска по метаданым 1С, справке синтакс-помошника и проверки синтаксиса.

15250 руб.

25.08.2025    47522    98    27    

111

Инструменты администратора БД Инструментарий разработчика Роли и права Программист 1С:Предприятие 8 1C:Бухгалтерия Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

17000 руб.

10.11.2023    24248    91    42    

101

Инструментарий разработчика Программист 1С:Предприятие 8 Платные (руб)

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

9500 руб.

17.05.2024    51025    181    63    

209

SALE! %

Мастера заполнения Поиск данных Инструментарий разработчика Подбор и обработка объектов 1С 8.3 1С 8.5 Платные (руб)

Infostart MagicInput улучшает подбор в полях ввода 1С: ищет по любой части названия и по нескольким ключевым фрагментам, распознаёт ввод в другой раскладке и показывает иконки/статусы объектов прямо в списке. Поддерживает вставку навигационной ссылки/представления документа для автоподбора; для разработчиков доступны поиск по GUID и полному имени предопределённого. Работает в управляемых формах и подключается в большинстве конфигураций 1С 8.3/8.5.

5000 4000 руб.

25.02.2026    2424    11    1    

12
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. milkers 3033 27.03.26 09:35 Сейчас в теме
Добрый день, разработка интересная в принципе, но подскажите пожалуйста, в каких случаях вообще может быть это нужно?
2. n_mezentsev 111 27.03.26 09:56 Сейчас в теме
(1) Мы этикетки печатаем на лазерном маркираторе, он понимает только векторные изображения. А так пример использования я приводил в статье - можно скидывать клиенту не pdf, а изображение например
3. kalyaka 1158 27.03.26 10:35 Сейчас в теме
Интересно посмотреть на результат преобразования. Печатный документ выглядит как исходный?
4. n_mezentsev 111 27.03.26 10:50 Сейчас в теме
(3) Печатный документ выглядит так, как если бы вы с текущими параметрами страницы экспортировали бы документ в pdf, только и всего, если не считать, что он разбит на страницы
Для отправки сообщения требуется регистрация/авторизация