科技微讯

如何压缩 PDF 文件:imagemagick、Ghostscript

为什么要压缩 PDF 文档

我用 iPad 扫描了一些文件,想把它保存在印象笔记,但文件体积有点大,同步时间可能有点久。有很多在线压缩 PDF 文件的网站,不过需要把文件上传到他们的服务器,再从他们的服务器下载下来,效率有点低。

我需要一种本地压缩 PDF 文件的方法。我用 Mac,苹果官网介绍了如何使用预览应用压缩 PDF,但压缩后太模糊,完全不能用。以下是更好用的方法。

如何压缩 PDF 文档,以 Mac 为例

使用 Ghostscript

其中的 input.pdf 是需要压缩的 pdf 文件,output.pdf 是最后生成的文件,通过 144 设置目标文件的 DPI,144 是比较理想的值,数值越小体积越小,当然也越模糊。

2023-03-25 补充:我问了 ChatGPT 什么是 Ghostscript,以及它有什么用:

Ghostscript 是一种用于 PostScript 语言和 PDF 文件格式的免费开源解释器。它用于将 PostScript 和 PDF 文件转换为其他格式,例如光栅图像(JPEG,PNG 等)或其他矢量格式(SVG,DXF 等)。Ghostscript 通常用作需要处理 PostScript 或 PDF 文件的其他程序的后端,例如打印机,PDF 查看器和图像编辑器。

Ghostscript 可以从命令行或其他程序的库中使用。它适用于 Windows,macOS 和 Linux,并在 GNU Affero 通用公共许可证下获得许可。Ghostscript 是处理 PostScript 和 PDF 文件的强大工具,并广泛用于印刷和出版行业。

使用 imagemagick

imagemagick 有很多功能,可以把 pdf 文件转换成图片,或者反过来把多个图片合并成一个 pdf,等等。当涉及 pdf 操作时,似乎都需要 Ghostscript 的支持,所以首先在电脑安装 Ghostscript 和 imagemagick,用 brew 安装即可。

imagemagick 压缩 pdf 的思路如下:

关于压缩图片所使用的 -sampling-factor 4:2:0 -strip -quality 60 -interlace JPEG -colorspace RGB,可参考stackoverflow的一个问答。

使用 imagemagick 压缩 pdf 有一个大缺点。如果这个 pdf 是扫描件,这样压缩效果很好,但是如果 pdf 的内容是矢量内容,例如 word 文档转换过来的等等,这样反而会增加生成的 pdf 文件的体积。因为 imagemagick 把矢量内容栅格化了,页面都变成了图片,而 shrinkpdf.sh 不存在这个问题。

让 PDF 看起来是扫描出来的样子

Hacker News 有一个帖子分享了多种把 PDF 转换成看起来是用扫描仪扫描出来的样子的方法,例如:

convert -density 150 ORIGINAL.pdf -colorspace gray +noise Gaussian -rotate 0.5 -depth 2 SCANNED.pdf

lookscanned 是国内开发者做的在浏览器本地处理 PDF 使之看上起被打印的网站。


相关文章:

thumbsup0
thumbsdown0
暂无评论