在 Windows 上使用 Ghostscript 从 PDF 进行分页 JPEG 转换/导出

Posted

技术标签:

【中文标题】在 Windows 上使用 Ghostscript 从 PDF 进行分页 JPEG 转换/导出【英文标题】:Page-wise JPEG conversion/export from PDF using Ghostscript on Windows 【发布时间】:2012-08-11 10:35:30 【问题描述】:

我想使用 ghostscriptpdf转换 成一系列 jpeg 图像。一切正常,除了:

.jpeg 输出文件名的格式说明符 (%d) 不起作用 Windows(我使用的是 Windows 7 64 位),所以我需要调用 gswin64c.exe 作为每一页。 导出的 .jpeg 文件在页面周围有白色条纹,而 .pdf 那里没有任何东西 - 我可以以某种方式摆脱它们吗?

我的命令行:

gswin64c.exe \
   -dSAFER -dBATCH -dNOPAUSE \
   -sDEVICE=jpeg \
   -r350 \
   -dJPEGQ=100 \
   -dFirstPage=1 -dLastPage=1 \
   -sOutputFile=magazine-1.jpg \
     magazine.pdf

【问题讨论】:

您能否提供一个(链接到)展示此行为的示例 PDF 页面?如果没有样本,就无法确定白色条带的原因,也无法找到避免它的方法。 【参考方案1】:

    在 Windows 上,您必须将格式说明符的 % 字符加倍以获得页码增量:

    gswin64c.exe \
         -o 杂志页面_%%04d.jpg \
         -sDEVICE=JPEG\
         -r350\
         -dJPEGQ=100 \
          杂志.pdf
    

    没有看到您的 PDF,我无法确定您的白条来自哪里。

    所以,只是理论上的:通常,在现实中作为白色背景出现在 PDF 页面(在 PDF 阅读器中查看或打印在纸上)的内容是 透明 背景。 (您可以在 Acrobat Reader 中使透明区域可见:转到首选项... -> 页面显示 并激活复选框显示透明度网格

    JPEG 不知道透明度并将所有完全透明的区域转换为白色。

    您可以在 ImageMagick 的帮助下修剪掉白色区域。或者,如果您知道每个条带的确切宽度(以及 PDF 页面尺寸),您可以通过额外的命令行参数告诉 Ghostscript 修剪掉这些...

    您还可以转换为支持透明度的 PNG:

    gswin64c.exe \
         -o 杂志页面_%%04d.png \
         -sDEVICE=pngalpha\
         -r350\
          杂志.pdf
    
    请注意,页面图像周围仍然会有条纹 - 但它们将是透明的,而不是白色的。

【讨论】:

白色边框很可能是媒体框(GS 使用)和裁剪框(观众使用)之间的区别。您可以使用 -dUseCropBox 告诉 GS 使用 CropBox 而不是 MediaBox。您不需要将 '%' 加倍 除非 您从批处理文件中调用 GS,在命令行上 '%d' 应该可以正常工作。正在使用的 GS 版本的示例 PDF ilfe 会有所帮助

以上是关于在 Windows 上使用 Ghostscript 从 PDF 进行分页 JPEG 转换/导出的主要内容,如果未能解决你的问题,请参考以下文章

在 Windows 8 上用 Python 导入 Ghostscript

Ghostscript - 如何在 Windows10 或 Windows Server 2012 上抑制打印对话框

让 Graphic Magick 检测 Ghostscript 以在 Windows 上阅读 pdf。如何将 WINDOWS CMD 上的 Ghostscript 调用名称更改为“gs”?

Ghostscript:如何在 Windows 上将 PDF 与通配符合并

Ghostscript:Linux 和 Windows 变体之间有啥区别?

Windows 上的 Ghostscript 导致 -dPDFSETTINGS 的选项无效