如何用 Ghostscript 处理 PDF

花火田丁 花火田丁 2020-05-06 14:28:27 +0000

题图来自于NextDay


环境:

Windows 操作系统

Ghostscript 9.5.21

我在 从小洞补起 中提到过一种用脚本处理加密 PDF 文件的方法,这个工具软件就是 Ghostscript,通过命令行的形式可以将 PDF 转成为图像文件,并且支持部分加密的 PDF(这里的加密主要是指用数字证书做过签名)。

当时做这个的需求是因为,前端上传上来的附件格式有 PDF 和图片,但是对于后台工作人员来说,PDF 预览不是很方便,于是就需要将 PDF 进行转换,这样统一成图片格式,后台通过专用的看图软件可以方便地查看资料。

GhostScript 和 ImageMagick 一样使用起来也很简单,基本上可以用一句命令行搞定,但功能也是相当强大,PDF 也只是其中一部分,单看这个功能树就已经感受到它的强大了,更多请见官方文档2

图片来自网站截图,版权归原作者所有

对于新用户,官方也提供了一个「HOW TO USE」的 GuideLine3,从安装到使用,看这篇指引即可。

这里直接放上将 PDF 转换成 JPG 的一句话脚本,这次以 Windows 环境为例。

gs -sDEVICE=jpeg -r300 -o C:\dest\test_%d.jpg -dBATCH -dNOPAUSE C:\src\test.PDF

我们很快过一下其中几个参数:

-sDEVICE:输出设备,我们可以理解成文件格式+输出设备(包括打印机),详见 Devices 文档4

-r300:是指输出图像的 DPI,这里即是 300 DPI 的意思

-o:输出文件,可配合 -dBATCH (批处理) 和 -dNOPAUSE(每页无提示) 参数使用

这里只是用到了最常用的几个参数,如果你对输出图像有要求,比如字体、反锯齿,那可以用到更高阶的一些参数,比如 -dTextAlphaBits -dGraphicsAlphaBits 等等。

依旧用起来简单,但功能很强大对不对,这是我也是热爱脚本的原因之一,也是做产品的宗旨,降低学习成本,但功能上丝毫不含糊。

最后还是提醒一句,不是所有的 PDF 都能转换成功,即便是可以用 Adobe PDF Reader 打开的 PDF,官方也给出了说明,大意是「Adobe 比较‘宽容’」。

图片来自网站截图,版权归原作者所有

结合 如何用 ImageMagick 处理图片 中提到的 ImageMagick 的功能,来做个 PDF + 图片处理小能手吧。

P.S. 最近收到一位辉友的消息,用 ImageMagick 做出了很棒的 GIF 科普小动画👏(当然前提是画画技能超棒),好奇心+执行力,总是可以带来意想不到的惊喜,如果我的「HOW TO」系列也给你带来了一丝丝的帮助,可以通过留言告诉我,这样我会更加有动力写下去😊(最近写文比较懈怠,近期将慢慢恢复)

另,公众号文章支持「专辑」了,我的「HOW TO」系列也终于有了安身之处😄,欢迎大家点击「阅读原文」处查看。

  1. GhostScript 下载地址:https://ghostscript.com/download/gsdnld.html ↩︎

  2. GhostScript 官方文档:https://www.ghostscript.com/doc/9.52/Readme.htm ↩︎

  3. GhostScript 用户指南:https://www.ghostscript.com/doc/9.52/Use.htm ↩︎

  4. GhostScript 设备:https://www.ghostscript.com/doc/9.52/Devices.htm↩︎




关于「HOW TO」系列

这个系列的初衷,我在 回归初心 中提到的,因为平时写的关于「WHY」或者心理活动方面的文章,「HOW TO」系列更偏向于实用。另外一点在于,我发现,有些本行业内认为小儿科或者不值得一提的工具或者方法,对于大多数行业外的人来说,还是比较陌生的,本着「抛砖引玉」的想法,想让大家可以通过这些「砖」打开思路,也可以了解到一些平常不太接触得到的一些东西。

旧文参考:

一句话生成卡通版照片

如何用 aria2 打造 Mac 上强大的下载工具

如何用 Swift 写一个手电筒 App

如何快速制作「一图看懂」

如何用 GitHub 搭建个人博客

如何用 RSSHub 打造个性阅读器

QuickTime Player 实用技巧

如何用 ImageMagick 处理图片

如何用 iMovie 做看上去很高级的视频

如何用 Python 写一个最简单的爬虫

如何用 ffmpeg 处理视频

如何用 ifttt 做一些自动化提醒



撒欢吧
谈理想
聊人生
讲故事
相对论
花火田丁
微信号:huahuoding
花火田丁
不折腾不人生