使用Ghostscript 9.15将PDF转换为PCL

时间:2015-03-17 16:32:29

标签: pdf ghostscript printer-control-language

要求是将PDF转换为嵌入了宏的PCL(目前在Windows上对此进行测试,但是我需要在应用程序中使用此运行时并从UNIX打印)。该宏稍后将在另一个文档中使用,以嵌入此裁剪图像并打印在一个页面上。我将使用PCL转义码调用MacroNumber,然后打印图像。 (您可以将其视为徽标图像。)

我可以使用CropBox将带有空格的PDF转换为没有任何空格的PDF。

"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

我也尝试过在内部使用Ghostscript的ImageMagick。所以我猜,如果我在GS中使用正确的开关,我应该能够实现我的目标。

输入PDF文件:Click Here

P.S:我在Stackoverflow上看过其他PDF到PCL查询,其他人更直接的PDF到PCL。我的是裁剪PDF并输出应该是PCL。

问题继续:Link

2 个答案:

答案 0 :(得分:4)

我使用自编译的Ghostscript v9.16(未发布的,来自当前的GhostPDL GIT源)使用以下命令行处理了示例输入PDF:

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上做同样的事情,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-screenshot

正如KenS所指出的那样:在处理裁剪的PDF中间数据时使用-dUseCropBox非常重要!

答案 1 :(得分:1)

添加CropBox并没有真正做多少,它使PDF保持完全相同,但为页面添加了CropBox条目。 GS通常使用MediaBox,而不是CropBox,因此将CropBox添加到PDF无效。

您可以尝试添加-dUseCropBox。如果您认为添加的空白实际上存在于原始PDF中,但被CropBox屏蔽,那么使用-dUseCropBox将使GS在渲染PDF时使用CropBox。 / p>