Конвертируйте PDF в PCL используя Ghostscript 9.15

Требуется преобразовать PDF в PCL со встроенным макросом (в настоящее время это тестируется в Windows, однако мне нужно будет использовать эту среду выполнения в приложении и распечатать ее из UNIX). Макрос будет использован позже в другом документе, чтобы встроить это обрезанное изображение и распечатать на одной странице. Я буду использовать escape-коды PCL для вызова MacroNumber, и тогда изображение будет напечатано. (Вы можете рассматривать это как изображение логотипа.)

Я могу конвертировать PDF с пробелами в PDF без каких-либо пробелов с помощью CropBox.

"c:\progra~1\gs\gs9.15\bin\gswin64.exe" -o _sourcePDFcropped.pdf \
    -sDEVICE=pdfwrite -c "[/CropBox [1 140 320 650] /PAGES pdfmark" \
    -f _sourcePDF.pdf

Тем не менее, когда я преобразую это _sourcePDFcropped.pdf в PCL, это все еще добавляет пробел.

"c:\progra~1\gs\gs9.15\bin\gswin64c.exe" -dBATCH -dNOPAUSE \
   -sDEVICE=pxlcolor -g100x200 -sOutputFile=_sourceFedGroundCroppedTest.pcl \
   -f _sourceFedGroundCropped.pdf

Я пытался использовать MKPCL, и он делает свою работу. Поскольку он не имеет большой поддержки, я пытаюсь использовать Ghostscript.

MKPCL.EXE -c4 -t -m 100 -p Image.jpg Image.MAC

Я также попробовал ImageMagick, который внутренне использует Ghostscript. Так что я предполагаю, что если я использую правильные переключатели в GS, я смогу достичь своей цели.

Входной файл PDF: нажмите здесь

PS: я видел другие запросы PDF к PCL на Stackru, другие - более простые PDF к PCL. Моя задача - обрезать PDF, и вывод должен быть PCL.

Вопрос продолжен: Ссылка

2 ответа

Решение

Я обработал пример входного PDF-файла с помощью следующей командной строки, используя самоскомпилированный Ghostscript v9.16 (не выпущен, из текущих источников GhostPDL GIT):

gs -o -                                          \
   -sDEVICE=pdfwrite                             \
   -c "[/CropBox [1 140 320 650] /PAGES pdfmark" \
   -f source.pdf                                 \
                                                 \
| gs -o tst.pcl                                  \
    -sDEVICE=pxlcolor                            \
    -dUseCropBox                                 \
    -f -

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

Если вы хотите сделать то же самое в Windows, командная строка в cmd.exe/DOS окно будет:

gswin64c.exe -o -                                ^
   -sDEVICE=pdfwrite                             ^
   -c "[/CropBox [1 140 320 650] /PAGES pdfmark" ^
   -f source.pdf                                 ^
                                                 ^
| gswin64c.exe -o tst.pcl                        ^
    -sDEVICE=pxlcolor                            ^
    -dUseCropBox                                 ^
    -f -

Затем я открыл его с помощью скомпилированного средства просмотра PCL (также из источников GhostPDL), pcl6:

pcl6 tst.pcl

Это скриншот, показывающий pcl6 окно:

pcl6-скриншот

Как также отметил Кенс: важно использовать -dUseCropBox при обработке обрезанных промежуточных данных PDF!

Добавление CropBox на самом деле мало что дает, оно оставляет PDF точно таким же, но добавляет запись CropBox для страницы. GS обычно использует MediaBox, а не CropBox, поэтому добавление CropBox в PDF не имеет никакого эффекта.

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

Другие вопросы по тегам