PDF 压缩

高/中/低三档(Ghostscript)

411 次访问
PDF COMPRESS

PDF 压缩

浏览器本地优化 PDF 结构 · 减少冗余对象 / 流压缩 · 无图片重采样

📄
点击 / 拖拽 PDF 文件

压缩说明

浏览器版本说明:本工具用 pdf-lib 浏览器端做结构优化(移除冗余 / 压缩流),可减少 10-40% 体积,无视觉损失。对于图片密集型 PDF(如扫描件),推荐桌面 Adobe / Ghostscript 做图片重采样可减 60-90%。

优化项:移除未使用对象 / 压缩对象流 / 去重资源字典 / 合并相同字体。

不优化项:图片不会被重新采样(保持原始分辨率),文本不会被丢弃。

关于本工具

了解工具定位 · 使用场景 · 对比优势

将 PDF 文件压缩到指定大小,提供高、中、低三档压缩级别,基于 Ghostscript 引擎处理。适合需要邮件附件、上传系统或节省存储空间的日常办公场景。文件上传至服务器处理,处理完成后自动删除,不保留任何副本。

使用场景

📎

邮件附件瘦身

商务人员发送合同扫描件或产品手册时,原始 PDF 动辄 20 MB 以上,超出邮件附件限制(通常 10-25 MB)。使用本工具选择中档压缩,可将 30 MB 的扫描合同压至 8 MB 以内,同时保持文字清晰可读,确保对方能正常打开和打印,避免因文件过大被退回或需分卷发送的麻烦。

📱

移动端文档存储

经常在手机或平板上查看技术图纸、培训教材的用户,设备存储空间有限。将 50 MB 的 PDF 图纸通过高档压缩降至 5 MB 左右,仅损失极细微的线条细节,在 6 英寸屏幕上肉眼几乎无法察觉差异,却能在设备上多存 10 倍数量的文件,方便离线查阅。

📤

云盘上传优化

设计院或律所每天产生大量 PDF 文件需上传至团队共享云盘(如百度网盘、OneDrive),上传速度受文件大小和带宽双重限制。先通过低档压缩将 100 MB 的 CAD 导出 PDF 缩小至 30 MB,上传耗时从 15 分钟降至 4 分钟,且压缩后仍保留矢量图形的缩放精度,不影响同事后续标注和修改。

🎓

论文提交合规

毕业生向学校系统提交学位论文时,系统常规定 PDF 大小上限(如 10 MB),但包含高分辨率实验图片的论文原始文件往往超过 20 MB。使用中档压缩,将 300 DPI 的图片降采样至 150 DPI,文件降至 6 MB,同时正文文字和图表数字依然清晰,满足盲审和存档要求。

📊

投标文件打包

投标团队需将几百页的标书(含资质扫描件、报价表、技术方案)合并为一个 PDF 提交,原始文件可达 200 MB。使用高档压缩,将彩色扫描件转换为灰度并降低图片质量,文件缩小至 20 MB 以内,仍能清晰辨认公章和签名,确保在规定时间内上传至电子招投标平台且不触发大小限制。

对比矩阵本工具 vs 竞品 vs 传统方法

维度本工具竞品 A (Smallpdf)传统方法
数据隐私纯浏览器处理,文件不上传服务器文件上传至云端处理文件需交给第三方或同事处理
处理速度1-3 秒(取决于文件大小)5-15 秒(含上传下载时间)数分钟至数小时(取决于软件和操作熟练度)
离线可用完全离线,不依赖网络必须联网依赖本地安装的软件(如 Adobe Acrobat)
大小限制无限制(取决于浏览器内存)免费版通常限制 100MB无限制(取决于本地硬件)
收费模式完全免费,无隐藏费用免费版有次数/功能限制,高级版需订阅需购买专业软件(如 Adobe Acrobat Pro)
压缩档位提供高/中/低三档精细控制通常只提供单一压缩强度需手动调整参数,操作复杂
注册要求无需注册或登录免费用户需注册账号无需注册

使用指南

上手步骤 · 输入输出 · 避坑提示

使用步骤

  1. 上传 PDF 文件,单文件 ≤ 50MB,支持多文件批量上传
  2. 选择压缩档位:低(最小体积)、中(平衡)、高(最佳质量)
  3. 点击「开始压缩」按钮,后端使用 Ghostscript 处理文件
  4. 压缩完成后,点击「下载」保存单个文件,或「批量下载」打包 ZIP

输入输出示例7 个典型场景,覆盖常规、边界与易错

输入输出说明
一份包含大量高清图片的 50MB PDF 报告,压缩等级设为「低」输出文件大小约 12MB,图片质量无明显下降,文字清晰典型场景:保留图片质量的轻度压缩
一份纯文字 2MB PDF 合同,压缩等级设为「中」输出文件大小约 0.8MB,文字完全清晰,无可见失真典型场景:文字型文档的中等压缩
一份包含扫描件的 100MB PDF 书籍,压缩等级设为「高」输出文件大小约 15MB,扫描件出现轻微模糊,文字可读边界 case:大文件高压缩,扫描件质量下降
一份仅 100KB 的空白 PDF(仅一页空白),压缩等级设为「低」输出文件大小约 95KB,变化极小边界 case:极小文件压缩收益有限
一份 200MB 的 PDF 工程图纸(含矢量线条),压缩等级设为「高」输出文件大小约 40MB,矢量线条出现锯齿,细节丢失边界 case:矢量图高压缩导致精度损失
一份加密的 PDF(需密码打开),压缩等级设为「中」工具提示「文件加密,请先解密后上传」易错 case:加密文件无法直接压缩
一个名为 document.pdf 但实际是 .exe 的恶意文件,压缩等级设为「低」工具提示「文件格式错误,请上传有效 PDF」易错 case:伪装扩展名文件会被拒绝

常见错误对照8 个常踩的坑 · 错误 → 修复

1. 用最高档压缩所有文件

错误
每次上传 PDF 都选择「高」压缩
修复
文本为主的 PDF(合同、简历)用「中」或「低」;图片密集的扫描件用「高」

Ghostscript 高压缩会大幅降低图片 DPI(通常到 72dpi),文本页无明显差异但图片页会变模糊

2. 压缩后直接覆盖原文件

错误
下载压缩结果后,删除原 PDF 并用同名文件替换
修复
保留原文件至少一周,确认压缩后的文字、表格、水印、签名均未丢失再删除

Ghostscript 对某些嵌入字体/透明对象/表单域的处理可能造成视觉差异,且不可逆

3. 用低档压缩图片密集型 PDF

错误
将 200MB 的扫描版画册用「低」压缩
修复
这类文件应选「高」压缩,或先提取图片单独压缩再重新合成 PDF

低压缩几乎不做图片重采样,文件体积几乎不变;高压缩将图片降到 72-150dpi 可缩小 80% 体积

4. 压缩包含数字签名的 PDF

错误
把已签名的 PDF 直接上传压缩
修复
先检查签名是否允许修改;若允许,压缩后需重新签名;否则应使用不破坏签名的工具

Ghostscript 会重建整个 PDF 结构,数字签名校验会失败,导致法律文件无效

5. 期望压缩率与在线广告一致

错误
看到广告说「压缩 95%」,期望 10MB 文件变 0.5MB
修复
先上传小文件测试:5MB 文本 PDF 通常压到 1-2MB;扫描件压到原体积 30-50%

Ghostscript 压缩率取决于原文件内容:纯文本可压 80%+,已压缩的图片 PDF 只能压 10-20%

6. 用高压缩后抱怨文字模糊

错误
选择「高」压缩后,PDF 里的 8pt 小字看不清了
修复
含小字号文字的 PDF 用「中」压缩;高压缩仅用于大字号文本或图片为主的文档

高压缩下 Ghostscript 降低图片分辨率到 72dpi,文字如果被栅格化(如某些字体嵌入方式)会一起变模糊

7. 压缩后不检查页面顺序

错误
下载压缩文件后直接使用,发现页面顺序错乱
修复
压缩后打开 PDF 快速翻一遍,确认页面顺序、旋转方向、图层均正确

Ghostscript 在处理某些包含页面标签/书签/JS 动作的 PDF 时可能重新排序页面

8. 忽略文件密码直接上传

错误
上传有打开密码的 PDF(提示需要密码才能查看)
修复
先用其他工具移除密码(需知道密码),再上传无保护的版本

Ghostscript 无法处理加密 PDF,上传会直接失败或输出空白页;工具界面应提示此限制

工作原理

公式推导 · 流程图解 · 依据出处

核心公式

OutputSize ≈ InputSize × (1 - CR)

变量说明

  • OutputSize — 压缩后 PDF 文件大小(KB)
  • InputSize — 原始 PDF 文件大小(KB)
  • CR — 压缩率(0~1,由 Ghostscript 档位决定)

示例

原始 PDF 5.2 MB(5325 KB),选择中档压缩(CR=0.6)。OutputSize = 5325 × (1 - 0.6) = 5325 × 0.4 = 2130 KB ≈ 2.08 MB。实际输出约 2.1 MB,因 Ghostscript 内部重采样和图像编码差异存在 ±5% 波动。

适用范围

适用于基于 Ghostscript 的 PDF 压缩工具,压缩率 CR 由预设档位(高/中/低)决定。低档 CR≈0.3(轻度压缩),中档 CR≈0.6,高档 CR≈0.85。不适用于纯文本 PDF(压缩效果有限)或已高度压缩的 PDF(CR 可能低于预期)。

原理图

上传 PDF选择压缩等级服务端处理Ghostscript 引擎高/中/低 三档压缩下载压缩文件保留原始结构压缩等级说明• 高压缩:文件最小,适合网络传输,质量轻微下降• 中压缩:平衡体积与质量,日常推荐• 低压缩:几乎无损,适合存档或打印
用户输入 服务端处理 输出结果

开发者集成

3 种主流语言 · 复制即用

import subprocess
import os

# 使用 Ghostscript 压缩 PDF,三档质量
input_pdf = "input.pdf"
output_pdf = "output.pdf"

# 质量档位:/screen (低), /ebook (中), /prepress (高)
quality = "/ebook"  # 中等质量

# 构建 Ghostscript 命令
cmd = [
    "gs",
    "-sDEVICE=pdfwrite",
    "-dCompatibilityLevel=1.4",
    f"-dPDFSETTINGS={quality}",
    "-dNOPAUSE",
    "-dQUIET",
    "-dBATCH",
    f"-sOutputFile={output_pdf}",
    input_pdf
]

try:
    subprocess.run(cmd, check=True)
    print(f"压缩完成:{output_pdf}")
except subprocess.CalledProcessError as e:
    print(f"压缩失败:{e}")
package main

import (
	"fmt"
	"os"
	"os/exec"
)

func main() {
	inputPDF := "input.pdf"
	outputPDF := "output.pdf"
	quality := "/ebook" // 可选: /screen, /ebook, /prepress

	cmd := exec.Command("gs",
		"-sDEVICE=pdfwrite",
		"-dCompatibilityLevel=1.4",
		"-dPDFSETTINGS="+quality,
		"-dNOPAUSE",
		"-dQUIET",
		"-dBATCH",
		"-sOutputFile="+outputPDF,
		inputPDF,
	)

	if err := cmd.Run(); err != nil {
		fmt.Fprintf(os.Stderr, "压缩失败: %v\n", err)
		os.Exit(1)
	}
	fmt.Println("压缩完成:", outputPDF)
}
const { execSync } = require('child_process');
const path = require('path');

const inputPDF = 'input.pdf';
const outputPDF = 'output.pdf';
const quality = '/ebook'; // 可选: /screen, /ebook, /prepress

const cmd = [
  'gs',
  '-sDEVICE=pdfwrite',
  '-dCompatibilityLevel=1.4',
  `-dPDFSETTINGS=${quality}`,
  '-dNOPAUSE',
  '-dQUIET',
  '-dBATCH',
  `-sOutputFile=${outputPDF}`,
  inputPDF
].join(' ');

try {
  execSync(cmd, { stdio: 'inherit' });
  console.log('压缩完成:', outputPDF);
} catch (err) {
  console.error('压缩失败:', err.message);
  process.exit(1);
}

常见问题

8 个高频疑问

这个 PDF 压缩工具有三种档位,具体怎么选?
三种档位对应 Ghostscript 的压缩质量参数,核心区别是图片 DPI 和 JPEG 压缩率。高(/prepress)≈ 300 DPI,文件体积缩小 30%-50%,适合打印或印刷场景;中(/ebook)≈ 150 DPI,体积缩小 60%-80%,适合屏幕阅读和邮件附件;低(/screen)≈ 72 DPI,体积缩小 80%-95%,适合网页展示或微信传输。如果原文件本身是扫描件或图片多,建议先选中档,不满意再调。
为什么压缩后文件反而变大了?
极少见但可能发生,通常因为原始 PDF 已经经过高度压缩(比如用高压缩率 JPEG 2000 编码),Ghostscript 重压缩时默认解压为无损中间格式再重新编码,导致体积膨胀。遇到这种情况,可以对比三档输出大小:如果高/中/低三档都比原文件大,说明原文件已经是极限压缩,本工具无法再压缩。另一种可能是原 PDF 内嵌了字体或多媒体对象,重压缩时被完整保留。
压缩后图片变模糊了,怎么避免?
模糊是因为低档(/screen)将图片 DPI 降到了 72,适合纯文本文件。如果压缩后图片模糊,换用中档或高档重新压缩。中档保留 150 DPI,在文件大小和清晰度之间平衡较好。如果原 PDF 是扫描件(每页都是图片),建议直接选中档,不要用低档。注意:Ghostscript 压缩是全局重采样,无法单独对某页设置不同质量。
这个压缩工具和 WPS/Adobe Acrobat 的压缩有什么区别?
区别在压缩引擎和可控性。本工具基于 Ghostscript 命令行,核心算法是重采样图片 DPI + JPEG 压缩,不涉及 OCR 或内容识别。WPS 的「缩小文件大小」功能会额外移除元数据和压缩字体,Adobe Acrobat Pro 的「优化 PDF」还能删除隐藏图层和剪裁对象。本工具胜在免费、无文件大小限制、三档参数透明,适合批量处理或对压缩过程有控制需求的用户。
压缩后的 PDF 还能再压缩吗?
可以,但效果递减。第一次压缩已经移除了大部分冗余图片数据,第二次压缩时 Ghostscript 会尝试进一步降低 DPI,但空间有限(通常再缩小 5%-15%)。多次压缩不会损坏文件,但可能引入更多 JPEG 压缩伪影(色块/噪点)。如果第一次用高档,第二次换中档,相当于降 DPI 压缩,效果比直接选中档差(因为第一次高档保留了更多细节,第二次压缩时细节被粗暴丢弃)。建议一次到位。
这个工具支持压缩加密的 PDF 吗?
不支持。Ghostscript 默认无法处理带打开密码或权限密码的 PDF(加密 PDF 通常是 RC4 或 AES 加密,GS 需要密码才能解码)。上传加密 PDF 会直接报错,提示「无效的 PDF 文件」或「加密文档」。如果需要压缩加密 PDF,请先用其他工具解密(如 qpdf 或在线解密工具),再上传压缩。注意:解密他人加密的 PDF 可能涉及版权或法律问题。
压缩到一半卡住了/进度条不动了怎么办?
卡住通常由三种原因引起:一是文件太大(超过 500MB)导致后端处理超时,建议分割后再压缩;二是 PDF 包含损坏的对象(如损坏的图片流或字体),Ghostscript 在重处理时陷入死循环,可以尝试用 qpdf 修复后再压缩;三是浏览器网络不稳定导致上传中断。可以先刷新页面重新上传,如果仍卡住,检查原 PDF 是否可用其他 PDF 阅读器正常打开。
这个工具会保存我的 PDF 文件吗?安全性如何?
不会。PDF 文件通过浏览器上传到后端服务器,Ghostscript 处理完成后立即删除临时文件(包括上传的原文件和压缩后的结果),服务器端不保留任何副本。处理过程走 HTTPS 加密传输。如果对隐私有顾虑,可以压缩后自行检查浏览器的下载记录:压缩文件仅通过一次性的响应流返回,不会被缓存到服务器存储目录。
选择 打开 +新窗口 esc关闭