Skip to content
reader.me

如何在离线状态下压缩 PDF(无需上传到任何地方)

为了缩小一个 PDF 文件,你并不需要把它发送到陌生的服务器上。这里介绍一种完全离线、在浏览器中就能完成的压缩方法。

DCDavid Carrero · · 6 分钟阅读

搜索“压缩 PDF”,你会看到十几个网站,几乎每一个都要求你先把文件拖进一个方框里。点击,等待上传进度条走完,再等下载链接出现。这个流程已经变得如此司空见惯,以至于很少有人会停下来想一想:为什么一个文件仅仅为了变小,就得先离开自己的电脑。

其实完全不需要。压缩说到底就是对眼前已经存在的字节做数学运算:算法查看 PDF 里的图片,去掉屏幕上根本用不着的细节,再把一切重新打包成更紧凑的文件。这个过程根本不需要服务器,需要的只是一个程序,而这个程序在你自己的设备上运行,和在别人的服务器上运行没有任何区别。

“上传后帮你压缩”是怎么变成默认做法的

网上大多数免费 PDF 工具都长自同一种结构:前端是一个网页表单,后端是一台真正干活的服务器。这种架构搭建起来简单,又很容易靠广告变现,于是迅速铺开,渐渐变成了人们默认“PDF 工具就该这样”的印象,尽管压缩这件事本身从来都不需要服务器。

这种模式的代价,在你没有认真想过文件里到底装了什么之前,是看不见的。你要压缩的 PDF,很少是随便找来测试的文档,更常见的是一份扫描过的合同、一份用于保险理赔的病历、一份签好字的租约,或是要发给客户的作品集邮件附件。文件一旦上传,哪怕只是处理所需的短短几秒,它也确实存在于你控制不到的地方。隐私政策承诺“一小时内删除”,这只是一句承诺,不是你能亲自验证的保证。

另一种做法:直接在浏览器里完成

现在的浏览器已经能运行相当复杂、以前只有桌面应用才能胜任的代码。这正是 reader.me 的压缩 PDF工具背后的原理:打开 PDF、压缩图片、重新构建文件所需的一切,都封装在这个页面本身当中,整个过程都发生在你的浏览器标签页里,发生在你自己的设备上。

实际的区别很简单。用基于上传的工具,你的文件要先送到服务器,再传回来。用基于浏览器的工具,文件根本不会离开。不是你把文档送出去交给别人处理,而是压缩程序主动来到你面前,在本地完成工作,再把结果交还给你。

如何在文件不离开设备的情况下压缩 PDF

  1. 打开压缩 PDF工具,选择你的文件。从文件系统里选中它并不会把它发送到任何地方,只是把它载入了页面的工作内存。
  2. 选择一个压缩(compression)级别。较轻的设置能让图片细节接近原图,只去除明显多余的部分;较强的设置会更大幅度地降低图片采样率,得到小得多的文件——如果一份扫描文档只是用来阅读而不是用来欣赏细节,这种设置就很实用。
  3. 执行压缩。这个过程发生在你的 CPU 上、这个标签页里,和其他任何页面脚本运行的方式没有区别。这里不会有和上传绑定的进度条,因为根本没有什么需要上传。
  4. 下载体积变小后的文件。它会像任何一次普通的文件下载一样,直接保存到你的设备上。

整个流程就是这样,所花的时间基本等于压缩运算本身所需的时间,前后都没有额外的网络往返。

如何亲自验证,而不是只听工具的一面之词

你不必单凭某个工具一句“我们不上传你的文件”就全盘相信。打开浏览器的开发者工具(按 F12,或右键选择“检查”),切换到“网络(Network)“选项卡,然后执行一次压缩,观察会发生什么:页面自身的代码加载一次,之后就没有别的动静了。不会有任何携带你 PDF 内容的请求发出去——如果真有,它就会明明白白地出现在那里。

还有一个更简单的测试:等页面加载完成后关掉 Wi-Fi,再压缩一个文件。如果在完全没有网络连接的情况下依然能正常工作,那就说明整个过程根本没有服务器参与,毫无疑问。这不是针对某一个工具的特殊技巧,而是“在浏览器中运行”这句话真正成立时,本该有的样子。

这件事为什么不只是图方便

跳过上传不仅仅是速度更快——虽然确实通常更快,因为不用等待别人服务器的带宽响应。更重要的是,这份文件在压缩前后都不曾存在于你的设备之外的任何地方。没有服务器日志,没有处理队列,中间也没有任何第三方经手。如果是一张生日传单,这点区别几乎无关紧要。但如果文件上有名字、地址或签名,这就是它始终完完全全属于你,和它曾经短暂脱离你掌控之间的区别。

下次遇到 PDF 太大、准备找个压缩工具的时候,不妨对它也提出你会对任何处理你文件的工具提出的那个问题:这真的有必要离开我的电脑吗?对于压缩、合并、拆分这些日常操作来说,越来越多的时候,诚实的答案是:不需要。