2015-03-17 5 views
1

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

Я могу преобразовать 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 файла: Click Here

P.S: Я видел другие PDF в PCL запросов на Stackoverflow, другие более прямой вперед PDF в PCL. Mine должен обрезать PDF, а вывод должен быть PCL.

Вопрос продолжил: Link

+0

Если это невозможно, сообщите нам, если у нас есть прозрачный фон вывода PCL (вместо белого фона). Спасибо – MoG

+1

Если вы не предоставили (ссылку на) образец ввода PDF, ваши шансы получить полезный ответ ниже ... Только входной PDF позволяет анализировать, действительно ли CropBox маскирует пустое пространство вокруг страница PDF ... –

+0

Я добавил исходный вход PDF (http://docdroid.net/ut2s) – MoG

ответ

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 - 

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

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

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-screenshot

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

+0

Вы не избегаете записи временного файла на диск, pdfwrite всегда записывает несколько временных файлов. Все, что вы делаете, это предотвращение написания промежуточного файла PDF. Я * сильно * советую подавать вывод pdfwrite в любом месте, это не поддерживается, и это определенно не будет работать, если вы линеаризуете файл PDF. – KenS

+0

Ну, я не создал линеаризованный PDF, и я хотел избежать явного хранения andere-чтения промежуточного PDF-файла. Я понимаю вашу мысль. ;-) –

+0

Я обеспокоен тем, что это не цель дизайна для pdfwrite, и в какой-то момент я могу изменить поведение, чтобы он не работал вообще, и тогда люди будут жаловаться, если трубы, которые они использовали, перестают работать. .... – KenS

1

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

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