PDF压缩到指定大小
输入目标大小,自动二分逼近 · 支持 100MB 大文件 · 文件不上传
全部处理在你的浏览器里完成:文件由 File API 读入内存,在 Web Worker 中逐页渲染重编码, 再通过 Blob 直接生成下载,没有上传环节。
拖拽 PDF 到此处
或点击选择文件,也可 Ctrl+V 粘贴
仅支持单个 PDF 文件,单个文件 ≤ 100 MB
📖 使用说明
- 把 PDF 拖进上传区,或点击选择文件(也支持 Ctrl+V 粘贴),单个文件不超过 100MB。
- 上传后工具会先在本地抽样试压几页,量出"这个文件在不糊的前提下能压到多小",据此自动填入推荐值 (1~2 秒内出结果,全程不联网);直接开始即可,也可以改成你要的具体限制 (报名系统这类常见值可点 500KB / 1MB / 2MB / 5MB / 10MB 快捷按钮)。
- 点击"开始压缩",页面会显示进度与当前阶段。大文件处理期间请勿刷新页面。
- 处理完成后对比压缩前后的体积,确认可接受后点击下载。
🔍 压缩原理
- 第一步 · 无损结构优化:用 pdf-lib 重新保存文档,压缩对象流、 关闭冗余元数据,尽量在不损失画质的情况下先把体积降下来。很多"其实不大"的 PDF 到这一步就够了。
- 第二步 · 逐页重编码:如果无损优化仍超目标,就用 pdf.js 把每一页按选定 DPI 渲染成图片,再用指定质量重新编码后合并成新 PDF。此时文字会变成图像, 体积可控但不再能选中文字。
- 目标逼近:质量参数与 DPI 都采用二分搜索:质量压到下限仍超标,就降低 DPI; 缩放后体积有富余,再回补质量。最多迭代 8 轮,单次任务 3 分钟超时保护。
- 不会无限降质:如果已经压到设定的下限仍达不到目标,会停止迭代并明确提示 "已尽力压缩",把当前较小结果交给你,而不是继续把画质压到不可读。
❓ 常见问题
Q:文件会上传到服务器吗?
A:不会。文件通过浏览器的 File API 读入内存,处理全程在本机完成。你可以打开开发者工具的 Network 面板自行验证:整个过程中没有文件相关的请求。
Q:压缩后文字还能选中、搜索吗?
A:如果只走了"无损结构优化",文字层完整保留。如果启用了"逐页重新编码", 输出是图片型 PDF,文字不可选中——这是把体积压到指定大小的必要代价。
Q:为什么压缩后反而变大了?
A:工具不会输出比原文件更大的结果。如果无损优化后反而更大,会直接保留原文件内容。 另外,如果原本就是低质量扫描件,可压缩空间很小,此时页面会提示"已尽力压缩"。
Q:支持加密 PDF 吗?
A:暂不支持带密码的 PDF,请先用原工具解除密码再处理。
Q:处理到一半能取消吗?
A:可以。点击"取消"按钮会终止迭代并释放资源,页面上不会留下任何文件残留。
Q:为什么建议的目标值不能太小?
A:PDF 有物理下限。一个几十页的彩色扫描件压到 50KB 通常做不到, 即使强行做到,页面也会模糊到无法阅读。这类文件建议拆分成多份处理。 上传后工具会实测并显示"这个文件最小能压到多少",默认目标值就按它来定, 不会给你一个达不到的数字。