要求是将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
答案 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
窗口的屏幕截图:
正如KenS所指出的那样:在处理裁剪的PDF中间数据时使用-dUseCropBox
非常重要!
答案 1 :(得分:1)
添加CropBox并没有真正做多少,它使PDF保持完全相同,但为页面添加了CropBox条目。 GS通常使用MediaBox,而不是CropBox,因此将CropBox添加到PDF无效。
您可以尝试添加-dUseCropBox
。如果您认为添加的空白实际上存在于原始PDF中,但被CropBox屏蔽,那么使用-dUseCropBox
将使GS在渲染PDF时使用CropBox。 / p>