Как бесплатно конвертировать PDF в изображения через командную строку Windows для интеграции с 1С

Программист IT и автоматизация бизнеса
← На главную

В процессе разработки в среде 1С:Предприятие часто возникает задача автоматической обработки входящих документов. Одной из наиболее распространенных задач является конвертация многостраничных PDF-файлов в формат изображений (JPG или PNG) для последующего отображения в интерфейсе программы, прикрепления к карточкам объектов или распознавания текста. Основная сложность заключается в необходимости найти надежный, быстрый и, что немаловажно, бесплатный инструмент, который стабильно работает через интерфейс командной строки (CLI).

В этой статье мы подробно рассмотрим несколько проверенных способов решения этой задачи, разберем необходимые инструменты и приведем примеры кода для запуска из 1С. Мы проанализируем как популярные пакеты вроде ImageMagick, так и специализированные легковесные утилиты типа Poppler.

Решение 1: Использование связки ImageMagick и Ghostscript

Это классический подход, который обсуждался на форуме. ImageMagick — это мощный программный комплекс для создания, редактирования и компоновки растровых изображений. Однако важно понимать, что для обработки PDF-файлов ImageMagick сам по себе не обладает встроенным интерпретатором PostScript и PDF. Для этих целей он использует сторонний движок — Ghostscript. Без него конвертация PDF работать не будет.

Разберем процесс настройки по шагам:

  1. Сначала скачаем и установим Ghostscript с официального сайта. Для современных систем Windows выбираем версию 64-bit.
  2. Затем установим ImageMagick. При установке крайне важно обратить внимание на один момент, упомянутый в обсуждении: обязательно установите флажок "Install legacy utilities (e.g. convert)". В новых версиях ImageMagick основная команда называется magick, но многие скрипты и привычки пользователей по-прежнему ориентированы на convert.
  3. Проверим работоспособность. Откроем командную строку и введем команду.

Разберем синтаксис команды для конвертации:

magick -density 300 "C:\Docs\input.pdf" -quality 90 "C:\Docs\output.jpg"

Проанализируем параметры этой команды:

Решение 2: Профессиональный подход с использованием Poppler (pdftoppm)

Если нам нужно максимально легкое и быстрое решение, которое не требует полноценной установки в систему (portable-вариант), то лучшим выбором будет библиотека Poppler. Утилита pdftoppm, входящая в её состав, считается стандартом де-факто в мире Linux для рендеринга PDF, но она прекрасно работает и под Windows.

Рассмотрим преимущества этого метода. В отличие от ImageMagick, Poppler работает "напрямую" и зачастую значительно быстрее отрисовывает сложные шрифты и векторные элементы. Для 1С это идеальный вариант: вы можете просто положить EXE-файл и необходимые DLL в каталог bin вашей базы или в общий сетевой ресурс.

Пример команды для pdftoppm:

pdftoppm.exe -jpeg -r 300 "input.pdf" "page"

Выясним, что делают эти ключи:

Решение 3: Использование PDFill PDF Editor (бесплатные инструменты)

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

Разберем пример вызова функции конвертации:


"C:\Program Files\PlotSoft\PDFill\PDFill.exe" PDF2Image "D:\input.pdf" "D:\output.png" 144 24 1 100 0

В данной строке параметры идут строго по порядку: путь к файлу, путь к результату, разрешение (144), битность цвета (24), флаг нумерации страниц, качество JPG и флаг для формата TIF. Это решение более тяжеловесное из-за необходимости установки GUI-приложения, но оно стабильно работает.

Решение 4: Прямой вызов Ghostscript (самый быстрый способ)

Для тех, кто хочет исключить "лишние звенья", можно использовать Ghostscript напрямую. ImageMagick по сути является оболочкой над ним, и прямой вызов экономит системные ресурсы.

Рассмотрим пример сложной команды Ghostscript:


gswin64c.exe -dNOPAUSE -dBATCH -sDEVICE=jpeg -r300 -sOutputFile="C:\Out\p_%d.jpg" "C:\In\source.pdf"

Разберем технические детали:

Реализация в коде 1С

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

Рассмотрим пример функции на языке 1С:


Процедура КонвертироватьPDFВИзображение(ПутьКPDF, ПутьКРезультату)
    
    // Подготовим строку запуска (на примере Poppler)
    ПутьКУтилите = "C:\Poppler\bin\pdftoppm.exe";
    ПараметрыЗапуска = "-jpeg -r 200 """ + ПутьКPDF + """ """ + ПутьКРезультату + """";
    
    ПолнаяКоманда = ПутьКУтилите + " " + ПараметрыЗапуска;
    
    // Используем ЗапуститьПриложение с ожиданием завершения
    // КодВозврата позволит нам понять, успешно ли прошла операция
    КодВозврата = 0;
    ЗапуститьПриложение(ПолнаяКоманда, , Истина, КодВозврата);
    
    Если КодВозврата = 0 Тогда
        Сообщить("Конвертация успешно завершена");
    Иначе
        Сообщить("Ошибка при конвертации. Код ошибки: " + КодВозврата);
    КонецЕсли;
    
КонецПроцедуры

Важные моменты при интеграции:

Сравнение инструментов

Проанализируем ситуацию и выберем подходящий инструмент в зависимости от требований:

  1. Poppler (pdftoppm): Лучший выбор для 1С. Не требует установки, работает очень быстро, легко переносится копированием папки.
  2. ImageMagick: Стоит выбрать, если помимо конвертации PDF вам нужно выполнять сложную обработку изображений (обрезка, наложение водяных знаков, изменение цветовых профилей).
  3. Ghostscript (напрямую): Для высоконагруженных систем, где важна каждая миллисекунда и минимальное потребление оперативной памяти.
  4. MuPDF (mutool): Хорошая альтернатива, если Poppler по каким-то причинам не подошел. Славится своей компактностью (весь инструмент — это один EXE-файл).

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

← На главную