Почему не формируется JPG из PDF при запуске Ghostscript из 1С и как это исправить?

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

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

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

Разбор симптомов и поиск причины ошибки

Типичный вызов внешней утилиты Ghostscript из 1С выглядит следующим образом:


ИмяФайлаБезРасширения = "C:\Files\Document";
КомандаЗапуска = "gswin32c.exe -q -SDEVICE=jpeg -r300x300 -sOutputFile=""" + ИмяФайлаБезРасширения + ".jpg""" + " -dNOPAUSE -dBATCH -- """ + ИмяФайлаБезРасширения + ".pdf""";
ЗапуститьПриложение(КомандаЗапуска);

Если при выполнении данной команды из программы 1С результирующий файл с расширением JPG не создается, необходимо запустить аналогичную команду напрямую через командную строку Windows (cmd.exe). Это позволит увидеть служебные сообщения и диагностировать сбой.

Чаще всего в консоли отображается ошибка: Cant load Ghostscript.dll (или не удается найти динамическую библиотеку gsdll32.dll). Это означает, что исполняемый файл gswin32c.exe не является автономным — для своей работы он требует наличия динамической библиотеки gsdll32.dll, которая не была обнаружена в системных путях Windows или в рабочем каталоге приложения.

Шаги по устранению ошибки загрузки Ghostscript.dll

Для восстановления корректной конвертации PDF в JPG выполним следующие действия:

  1. Установка полного дистрибутива Ghostscript: Загрузим и установим официальный инсталлятор Ghostscript на целевой компьютер. Автоматический установщик пропишет необходимые динамические библиотеки в реестре и системных переменных окружения.
  2. Размещение библиотеки рядом с исполняемым файлом: Если нет возможности выполнить полноценную установку Ghostscript в систему, скопируем файл библиотеки gsdll32.dll и поместим его в ту же папку, где находится сам файл gswin32c.exe. Это наиболее простой способ сделать утилиту рабочей.
  3. Размещение библиотеки в системных папках Windows: Обратим внимание на разрядность операционной системы и утилиты. Если используется 32-разрядная версия gswin32c.exe на 64-битной системе Windows, файл gsdll32.dll следует поместить в каталог C:\Windows\SysWOW64, а не в System32.

Важные технические нюансы работы с 1С

При организации конвертации через функцию ЗапуститьПриложение в 1С важно учитывать дополнительные параметры выполнения:

  1. Параметр ожидания завершения: В функции ЗапуститьПриложение третий параметр ЖдатьЗавершения по умолчанию равен Ложь. Если сразу после вызова команды следует код чтения или обработки сформированного файла JPG, 1С попытается открыть его еще до того, как Ghostscript завершит конвертацию. Передадим Истина в качестве третьего параметра: ЗапуститьПриложение(КомандаЗапуска, "", Истина);
  2. Обработка многостраничных PDF: Указание фиксированного имени выходного файла (например, file.jpg) корректно работает только для одностраничных документов. Для документов из нескольких страниц в ключе -sOutputFile обязательно использование маски нумерации (например, %d.jpg или %03d.jpg), иначе Ghostscript завершится с ошибкой или перезапишет страницы.
  3. Права доступа при выполнении на сервере: Если код выполняется в серверном контексте, процесс запускается от имени службы 1С. Убедимся, что учетная запись службы имеет права на запуск внешних приложений и запись файлов в целевой каталог.

Альтернативные способы конвертации PDF в 1С

Если использование Ghostscript затруднено из-за ограничений на установку стороннего ПО или разрядности системы, рассмотрим альтернативные варианты растеризации PDF:

  1. Использование утилиты pdftoppm (из пакета Poppler): Автономный консольный конвертер, не требующий установки DLL в системные каталоги. Запускается простой командой с указанием разрешения и формата вывода.
  2. Утилита ImageMagick: Консольное средство magick, позволяющее конвертировать форматы через командную строку.
  3. Внешняя Native-компонента для 1С: Подключение сторонних компонент (написанных на C++ или C# с библиотекой PDFium), выполняющих рендеринг страниц PDF в память 1С без вызова сторонних exe-файлов.
← На главную