使用 Ghostscript 9.15 将 PDF 转换为 PCL
Convert PDF to PCL using Ghostscript 9.15
要求是将 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:我在 Whosebug 上看到其他 PDF 到 PCL 的查询,其他更直接的 PDF 到 PCL。我的是裁剪 PDF,输出应该是 PCL。
问题继续:Link
添加 CropBox 并没有多大作用,它使 PDF 完全相同,但为页面添加了 CropBox 条目。 GS 通常会使用 MediaBox,而不是 CropBox,因此在 PDF 中添加 CropBox 没有任何效果。
您可以尝试添加 -dUseCropBox
。如果您认为 添加 的白色 space 实际上存在于原始 PDF 中,但被 CropBox 遮盖了,那么使用 -dUseCropBox
将使 GS 使用呈现 PDF 时的 CropBox。
我使用自编译的 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
window:
的屏幕截图
正如KenS所指出的:处理裁剪后的PDF中间数据时使用-dUseCropBox
很重要!
要求是将 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:我在 Whosebug 上看到其他 PDF 到 PCL 的查询,其他更直接的 PDF 到 PCL。我的是裁剪 PDF,输出应该是 PCL。
问题继续:Link
添加 CropBox 并没有多大作用,它使 PDF 完全相同,但为页面添加了 CropBox 条目。 GS 通常会使用 MediaBox,而不是 CropBox,因此在 PDF 中添加 CropBox 没有任何效果。
您可以尝试添加 -dUseCropBox
。如果您认为 添加 的白色 space 实际上存在于原始 PDF 中,但被 CropBox 遮盖了,那么使用 -dUseCropBox
将使 GS 使用呈现 PDF 时的 CropBox。
我使用自编译的 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
window:
正如KenS所指出的:处理裁剪后的PDF中间数据时使用-dUseCropBox
很重要!