piapia123
zh

PDF 压缩(扫描件优先)

文档

所有处理都在浏览器本地完成,数据不上传服务器

把文件拖到这里,或点击选择

PDF · 单个文件不超过 100 MB

把 PDF 压小,代价必须说在前面:这个工具是把每一页重新渲染成 JPEG 再装回 PDF,所以文字会变成图片 —— 不可选中、不可搜索、放大是像素。它对扫描件(整页本来就是图片)是纯赚,对数字排版的 PDF(文字、矢量)则可能反而变大,那种情况工具会如实告诉你,而不是给你一个更大的文件。三个参数的作用:精度(DPI 减半,像素变四分之一,这是最有效的一档)、质量(JPEG 质量,70% 通常看不出差别)、灰度(黑白内容能再省一半)。想保住可选中文字就不要用这个工具 —— 那需要"只压内嵌图片"的无损路线,浏览器端做不可靠(改图流要动 PDF 对象表,出错时会产出打不开的文件)。

功能

  • 逐页重新渲染为 JPEG,扫描件常能压掉 70%–90%
  • 精度 150 / 120 / 100 / 72 DPI 可选
  • JPEG 质量三档
  • 可转灰度:白底黑字的文档能再省一半
  • 可只压指定页(例如只压图片多的那几页)
  • 页面物理尺寸保持不变 —— 压缩不该改变打印大小
  • 压完反而更大时如实说明,并建议保留原文件
  • 文件不上传、不经过任何服务器

使用方法

  1. 把 PDF 拖进来(扫描件效果最好)
  2. 选精度与质量;黑白文档可以勾灰度
  3. 下载结果,翻几页确认还能看清
  4. 如果是文字型 PDF 且压不小,就保留原文件

常见问题

为什么压缩之后文字不能选中了?
因为这个工具把每页重新渲染成了图片。文字从此是像素,不再有文字层 —— 这是"压得最狠"的代价。要保留可选中文字,就得走另一条路(只重新编码内嵌的大图,不动文字与矢量),而那需要替换 PDF 里的图片流、直接改对象表 —— pdf-lib 的公开 API 做不到,硬做出错时会产出打不开的文件,比压不小更糟。所以这里只提供一条可靠的路,并把代价写在明处。
压完之后反而变大了?
说明这份文档主要是文字与矢量图形,而不是扫描图。文字在 PDF 里只占几十 KB(是"指令"),重做成图片就变成几百 KB 的像素。这时正确做法是保留原文件 —— 那份 PDF 本身已经很小了(文字型 PDF 通常只有几百 KB,没什么可压的)。如果你的目标是"给手机看的小文件",可以调低到 72 DPI 再试,但文字会明显发虚。
能压到指定大小(比如 5 MB 以下)吗?
不能直接指定 —— 体积取决于页数与内容,只能靠调 DPI 与质量去逼近。经验值:一页 A4 扫描件在 120 DPI + 70% 质量下约 100–200 KB,所以 40 页大约 4–8 MB。要更小就降到 100 DPI 或开灰度(黑白文档能到一半)。上传系统卡大小的时候,先转灰度往往一步就够。
文件会上传吗?
不会。渲染用 pdf.js、编码用 canvas、重新组装用 pdf-lib,全部在浏览器内存里完成,没有网络请求,断网也能用。

相关工具