Linux 系统下压缩 PDF 文件的完整指南

举报
Chocola 发表于 2026/09/11 00:09:42 2026/09/11
【摘要】 在日常工作中,我们经常会遇到 PDF 文件过大的问题——邮件附件有大小限制、平台上传有体积要求、云存储空间有限。如果你使用的是 Linux 系统,完全不需要上传到第三方网站,本地就能高效完成 PDF 压缩。本文将介绍几种实用的方法,从命令行到图形界面,总有一款适合你。 方法一:Ghostscript(最推荐的命令行方案)Ghostscript 是 Linux 下最强大、最经典的 PDF 压缩...

在日常工作中,我们经常会遇到 PDF 文件过大的问题——邮件附件有大小限制、平台上传有体积要求、云存储空间有限。如果你使用的是 Linux 系统,完全不需要上传到第三方网站,本地就能高效完成 PDF 压缩。本文将介绍几种实用的方法,从命令行到图形界面,总有一款适合你。


方法一:Ghostscript(最推荐的命令行方案)

Ghostscript 是 Linux 下最强大、最经典的 PDF 压缩工具,很多桌面软件的底层都依赖它。它完全免费开源,支持批量处理,压缩效果显著,通常可以减少 50%~80% 的文件体积。

安装 Ghostscript:

# Debian/Ubuntu 系
sudo apt install ghostscript

# Fedora/CentOS 系
sudo dnf install ghostscript

基础压缩命令:

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 \
   -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH \
   -sOutputFile=output.pdf input.pdf

核心参数 -dPDFSETTINGS 决定了压缩级别:

参数值 分辨率 说明
/screen 72 dpi 压缩最狠,适合屏幕阅读
/ebook 150 dpi 平衡之选,一般文档推荐
/printer 300 dpi 质量较高,适合打印
/prepress 300 dpi 几乎无损,高质量保留

💡 小贴士: 对于大多数日常场景,/ebook 模式是最佳选择,兼顾了文件大小和可读性。

批量压缩整个目录下的所有 PDF:

for file in *.pdf; do
  gs -sDEVICE=pdfwrite -dPDFSETTINGS=/ebook \
     -dNOPAUSE -dQUIET -dBATCH \
     -sOutputFile="compressed_${file}" "$file"
done

更精细地控制图片分辨率:

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 \
   -dPDFSETTINGS=/ebook \
   -dColorImageResolution=150 \
   -dGrayImageResolution=150 \
   -dMonoImageResolution=150 \
   -dNOPAUSE -dQUIET -dBATCH \
   -sOutputFile=output.pdf input.pdf

方法二:ps2pdf(Ghostscript 的简化封装)

ps2pdf 本质上是 Ghostscript 的快捷封装,命令更简洁,适合快速压缩:

ps2pdf -dPDFSETTINGS=/ebook input.pdf output.pdf

一行命令搞定,非常适合不想记长串参数的场景。


方法三:qpdf(轻量级结构优化)

qpdf 是另一个优秀的命令行工具,它通过压缩内容流和生成对象流来减小文件体积,对清晰度的影响非常小。

安装:

# Debian/Ubuntu 系
sudo apt install qpdf

# Fedora/CentOS 系
sudo dnf install qpdf

压缩命令:

qpdf --compress-streams=y --object-streams=generate input.pdf output.pdf

qpdf 的优势在于它是"结构优化"而非"降质压缩",适合对画质有严格要求的场景。


方法四:Python 脚本(适合开发者定制)

如果你熟悉 Python,可以使用 PyPDF2 库编写压缩脚本,特别适合集成到自动化工作流中:

from PyPDF2 import PdfReader, PdfWriter

def compress_pdf(input_path, output_path):
    reader = PdfReader(input_path)
    writer = PdfWriter()
    for page in reader.pages:
        writer.add_page(page)
    # 压缩内容流
    for i in range(len(writer.pages)):
        writer.pages[i].compress_content_streams()
    with open(output_path, "wb") as fp:
        writer.write(fp)

compress_pdf("input.pdf", "output.pdf")

这种方式对清晰度的影响最小,但压缩率相对 Ghostscript 会低一些。


方法五:图形界面工具(不想碰命令行的选择)

如果你不习惯命令行操作,也有图形界面方案:

  • LibreOffice Draw: 打开 PDF → 文件 → 导出为 PDF → 调低图像分辨率后导出,大多数 Linux 发行版已预装。
  • Stirling PDF: 自托管的 Web 应用,集成 60 多种 PDF 处理工具(含压缩),通过 Docker 部署,数据完全本地处理,隐私安全。
  • pdfshrinker / krop: 轻量级 GUI 压缩工具,界面简单直观。

注意事项

  • 压缩效果因文件而异: 包含大量图片的 PDF 压缩效果最明显(可达 80% 以上),纯文字 PDF 压缩空间有限。
  • 备份原文件: 压缩是有损操作,建议先备份重要文件再处理。
  • 扫描件效果一般: 整页都是图片的扫描件 PDF,Ghostscript 的常规模式效果有限,需要配合更激进的参数。
  • 隐私优先本地处理: 合同、证件等敏感文件,务必使用本地工具处理,避免上传到在线服务。

总结对比

工具 压缩率 易用性 适合场景
Ghostscript ⭐⭐⭐⭐⭐ 中等 批量处理、精细控制
ps2pdf ⭐⭐⭐⭐⭐ 简单 快速压缩
qpdf ⭐⭐⭐ 简单 无损结构优化
PyPDF2 ⭐⭐ 需编程 自动化集成
GUI 工具 ⭐⭐⭐⭐ 最简单 日常少量处理

对于大多数用户,Ghostscript + /ebook 模式就是最佳方案——安装简单、命令好记、效果出色。希望这篇指南能帮到你!

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。