При автоматизации документооборота в 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 или в рабочем каталоге приложения.
Для восстановления корректной конвертации PDF в JPG выполним следующие действия:
gsdll32.dll и поместим его в ту же папку, где находится сам файл gswin32c.exe. Это наиболее простой способ сделать утилиту рабочей.gswin32c.exe на 64-битной системе Windows, файл gsdll32.dll следует поместить в каталог C:\Windows\SysWOW64, а не в System32.При организации конвертации через функцию ЗапуститьПриложение в 1С важно учитывать дополнительные параметры выполнения:
ЗапуститьПриложение третий параметр ЖдатьЗавершения по умолчанию равен Ложь. Если сразу после вызова команды следует код чтения или обработки сформированного файла JPG, 1С попытается открыть его еще до того, как Ghostscript завершит конвертацию. Передадим Истина в качестве третьего параметра:
ЗапуститьПриложение(КомандаЗапуска, "", Истина);
file.jpg) корректно работает только для одностраничных документов. Для документов из нескольких страниц в ключе -sOutputFile обязательно использование маски нумерации (например, %d.jpg или %03d.jpg), иначе Ghostscript завершится с ошибкой или перезапишет страницы.Если использование Ghostscript затруднено из-за ограничений на установку стороннего ПО или разрядности системы, рассмотрим альтернативные варианты растеризации PDF:
magick, позволяющее конвертировать форматы через командную строку.