将yourfile.pdf替换为待压缩文件名字,压缩成功在当前目录下得到compressed.pdf
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=compressed.pdf yourfile.pdf

实测将30M的pdf文件压到了500kb也还算清晰,qpdf效果不行,支持linux暴打win下的垃圾软件

以下基于deepseek答案


在 Ubuntu 上给 PDF 瘦身,Ghostscriptqpdf 是两个很实用的命令行工具,也是 Linux 下的首选方案。它们各有侧重:Ghostscript 压缩率更高(但会牺牲画质),qpdf 则主打无损压缩和结构优化 。

工具 推荐场景 优点 缺点
Ghostscript 不在乎画质,追求极限压缩(如纯文字讲义)。 压缩率极高;可通过参数按需控制画质和大小 。 有损压缩,图片和文字会变模糊。
qpdf 保留原始画质,移除臃肿的冗余数据。 无损压缩,画质无损失;专为 PDF 结构优化,非常轻量 。 压缩率有限,对扫描件/图片型 PDF 效果一般。

⚙️ 具体操作方法

动手前,可以先看看原文件大小:

ls -lh yourfile.pdf

方案一:Ghostscript (追求高压缩率)

  1. 安装
    sudo apt update && sudo apt install ghostscript
    
  2. 压缩:关键是 -dPDFSETTINGS 参数,它决定了画质和大小,你可以按需选择 :
    gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=compressed.pdf yourfile.pdf
    
    • /screen: 72 dpi,画质最低,文件最小。
    • /ebook: 150 dpi,画质和大小比较均衡(推荐试试这个)。
    • /printer: 300 dpi,画质好,文件较大。

方案二:qpdf (保留原始画质)

  1. 安装
    sudo apt update && sudo apt install qpdf
    
  2. 压缩:它只做无损的结构优化,所以不用担心画质 。
    qpdf --compress-streams=y --object-streams=generate yourfile.pdf qpdf_compressed.pdf
    

✨ 其他小技巧

如果想进一步精简,还可以试试 exiftool。它能直接清除 PDF 里无关紧要的元数据(如作者、软件名等),操作时会直接覆盖原文件,建议提前备份 :

# 1. 安装
sudo apt install libimage-exiftool-perl
# 2. 清除元数据(会直接覆盖原文件,建议先备份)
exiftool -all:all= yourfile.pdf

这两个命令的效果差异很大,根本原因在于它们的设计哲学和底层工作机制完全不同

简单来说:Ghostscript 是"重构",qpdf 是"整理"。Ghostscript 之所以压缩效果好,是因为它重新生成了整个 PDF,在这个过程中可以对内容进行有损压缩;而 qpdf 只是优化 PDF 的内部结构,不改变任何实质内容。

Ghostscript:重构渲染,所以压缩狠

Ghostscript (gs) 本质上是一个 PostScript/PDF 解释器和渲染引擎。当你用 -sDEVICE=pdfwrite 时,它做的事情不是"修改"原 PDF,而是:

  1. 完全解析原 PDF 的所有内容(文字、图片、字体、矢量图形)
  2. 重新光栅化/采样其中的图像
  3. 重新编码所有内容,生成一个全新的 PDF 文件

-dPDFSETTINGS=/ebook 这个参数是关键——它会:

  • 将彩色/灰度图像重采样为 150 dpi(原文件可能是 300 dpi 或更高)
  • 对图像数据进行有损的 JPEG/DCT 压缩
  • 可能合并或子集化字体,去除冗余的元数据

这些操作直接减少了图像数据量,所以文件大小能显著下降。代价就是图片画质会有不可逆的损失——这也是为什么你有时会发现文字或图片变模糊。另外,新版本 Ghostscript 支持 JPEG 透传功能,如果图像不需要重采样,它会原样保留,避免二次压缩带来的画质损失。

qpdf:结构整理,所以效果有限

qpdf 的定位完全不同——它是 PDF 结构分析与优化工具,核心承诺是内容保留、无损操作

--compress-streams=y--object-streams=generate 做的事情是:

  1. 压缩流对象:对 PDF 内部的流(stream)数据应用 FlateDecode 压缩
  2. 对象流合并:把多个 PDF 对象打包进一个对象流(Object Stream),减少结构开销(这是 PDF 1.5 引入的特性)

这些操作不会改变任何图像的分辨率,不会重新压缩图片数据,不会丢弃任何内容。它只是把 PDF 内部的文件结构整理得更紧凑——比如原本未压缩的文本流被压缩了,分散的小对象被合并了。因此,如果原 PDF 的体积主要由高分辨率图片占据,qpdf 的压缩效果就会很有限;如果原 PDF 体积大是因为结构臃肿(比如未压缩的文本流、大量零散对象),qpdf 的效果会比较明显。

什么时候用哪个?

场景 推荐工具 原因
扫描件/图片型 PDF,体积巨大,能接受轻微画质下降 Ghostscript 重采样图片是唯一能显著减体积的手段
纯文字/矢量为主的 PDF,需要完全保留原始质量 qpdf 无损优化结构,不会改变任何视觉内容
需要最大化压缩,不在乎画质 Ghostscript /screen/ebook 72-150 dpi 重采样,体积最小
既要压缩又不想损失画质 两者结合:先 qpdf 优化结构,再用 gs/printer 模式 /printer 是 300 dpi,画质损失几乎不可察觉

Ghostscript 之所以被简称为 gs,原因很直接:它取自 “Ghostscript” 的首字母 G 和 S

🧶 命名背后的历史

根据其官网记载,这个命名其实是早期开源项目的一个惯例。创始人 L. Peter Deutsch 在 1988 年启动这个项目时,选择了 GNU General Public License (GPL) 许可证。当时,许多遵循 GPL 的项目习惯在名字前加上 “G” 前缀(如 GIMPGNOME),以彰显其自由软件的属性,因此得名 “G”-hostscript 。随着时间推移,gs 作为其核心命令行工具的调用名被保留下来,成为一种简洁的约定。

⚙️ 功能基因的差异

你觉得 gs 命令的压缩效果比 qpdf 好,这种差异的根源同样深埋在这两个项目的底层基因里:

特性 Ghostscript qpdf
项目基因 一款 PostScript/PDF 页面描述语言解释器,本质是渲染引擎,会完整解析并重写文件 。 一个 PDF 结构转换与优化库,强调内容保真,只在文件结构层面进行操作 。
压缩原理 "有损"重构。通过 pdfwrite 设备重写文件,可按设定降采样/重压缩图片(如 -dPDFSETTINGS=/ebook 降至 150 dpi),本质是重建文档。 "无损"优化。通过 --compress-streams=y 等参数启用算法压缩内部流、合并冗余对象,但不动图片像素本身
命令行简写 gs 无简写,直接使用 qpdf

所以,Ghostscript 是功能更强大的"文档处理器",为了压缩可以重新定义整个文件的构成;而 qpdf 更像一个精密的"文档结构师",在保证原汁原味的前提下进行内部整理。在命令行环境下,用户习惯直接用其简写 gs 来调用它的强大功能,也就不足为奇了。


这两个项目的核心差异就在于设计理念的不同,而它们的开源代码和领导者也都很容易找到。

🎨 Ghostscript:为“重写像素”而生,有开源

Ghostscript 本质上是一个 PostScript/PDF 解释器,核心功能是渲染。它处理文件时,会完整解析内容并像打印机一样“重画”整个文档。在这个过程中,-dPDFSETTINGS 参数会直接指挥它对图像进行重采样和重新压缩(比如把 300dpi 的图压到 150dpi),所以能大幅减小体积。

  • 开源代码与领导者
    • 创始人:由 L. Peter Deutsch 博士创立并由其公司 Aladdin Enterprises 主导开发,后由 Artifex 公司接手维护。
    • 开源地址:官网在 ghostscript.com,源码可通过 git clone git://git.ghostscript.com/ghostpdl.git 获取。

📄 qpdf:为“整理结构”而生,代码开放

qpdf 的定位是 PDF 结构转换与优化库,承诺内容保真(content-preserving)。它的 --compress-streams=y 只是用更优的算法重新打包 PDF 内部数据,或者合并冗余对象,绝不动图片本身的像素,所以压缩效果“有限”,但画质无损。

  • 开源代码与领导者
    • 创始人:由 Jay Berkenbilt 开发并维护。
    • 开源地址:托管在 GitHub (github.com/qpdf/qpdf),采用 Apache 2.0 协议。

💎 总结对比表

项目 Ghostscript qpdf
核心功能 PostScript/PDF 渲染与转换引擎 PDF 结构操作工具(合并、拆分、优化)
压缩原理 有损重构:重新采样/压缩图像(改变像素) 无损优化:压缩内部流、合并冗余结构(不动像素)
开源/创始人 开源 / L. Peter Deutsch (Aladdin/Artifex) 开源 / Jay Berkenbilt
代码获取 ghostscript.com github.com/qpdf/qpdf

如果你想极致压缩,追求“小体积”,Ghostscript 是首选;如果要保证“原汁原味”的画质,则优先考虑 qpdf。


Ghostscript 与 Adobe PDF 的关系,比你想象的要近得多,而 qpdf 则恰恰相反,它完全独立于 Adobe。简单来说:

  • Ghostscript 是 Adobe 生态的"兼容者":它实现了 Adobe 的 PostScript 和 PDF 标准,甚至被视为 Adobe Distiller 的开源替代品 。
  • qpdf 是 PDF 结构的"外科医生":它专注于在保持内容不变的前提下,无损地分析和修改 PDF 文件的内部结构,不依赖任何 Adobe 技术 。

🎨 Ghostscript:Adobe 生态的"兼容者"

Ghostscript 本质上是一个 PostScript 和 PDF 语言的解释器,这两个格式都是 Adobe 的看家本领 。

  • 角色定位:开源的 Distiller:它的很多功能,尤其是将 PostScript 转为 PDF,直接对标的就是 Adobe 的商业产品 Acrobat Distiller。比如它的 ps2pdf 命令,就是为了兼容 Distiller 的功能而生的 。
  • 功能重叠与竞争:Ghostscript 提供了大量与 Adobe Acrobat 相同的功能,比如转换格式、压缩文档、设置权限等,常被视为 Adobe 软件的免费、开源的命令行替代品 。

🔧 qpdf:PDF 结构的"外科医生"

qpdf 则选择了与 Ghostscript 完全不同的技术路线。它不关心 Adobe 的技术体系,也不"渲染"页面,而是专注于操作 PDF 文件本身的数据结构

  • 角色定位:独立的优化器:它的目标是提供一个不依赖任何 Adobe 技术的命令行工具,让你能对 PDF 进行"外科手术"式的操作,比如合并、拆分页面,或通过优化内部结构来压缩文件 。
  • 核心承诺:内容保真:qpdf 的所有操作都是无损的,它不会重新压缩图片或转换内容,只优化文件结构 。这意味着经过它处理的文件,画面质量不会有任何损失。

这也解释了为什么 gs 能通过重采样图片来深度压缩,而 qpdf 的效果更侧重于结构上的"瘦身"。简单来说,Ghostscript 是对着 PDF “重画” 一遍,而 qpdf 则是对 PDF 文件做 “内容不变的结构整理”

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐