Reeff 怎么让 PDF 留在你的设备上

最后更新 2026年11月6日

「文件从不离开你的设备」这句话很容易印在落地页上,却很难从外部证伪。这一页给的是长版本:哪个库负责哪件事、你在操作时浏览器到底下载了什么、这个方案在哪里失效,以及怎么用一分半钟自己验证全部结论。

两个库,两件完全不同的事

Reeff.PDF 上的工具几乎都属两类工作之一。把它们混为一谈,正是「免费 PDF 工具」悄悄毁掉你文字层的常见原因。

操作使用的库对文件做了什么
合并、拆分、旋转、删除、提取、重排、裁剪pdf-lib改写页面树与页面框。页面内容流原样复制——不解码、不重编码——所以字体、链接与可选中文字都会保留。
PDF 转图片;压缩的「平衡」「强力」档pdf.js按选定 DPI 把每页渲染到 canvas,再把 canvas 导出成 JPEG 或 PNG。这是唯一会把文字变成像素的路径。
文字框、签名、批注fabric.js + pdf-lib元素先画在编辑器的 canvas 上,再作为叠加层写进 PDF。原始页面在下面完全不动。
「轻度」压缩pdf-lib用对象流重新打包文件,并保持元数据不动。它无法压缩图像数据,所以节省幅度天生就小。
每个工具到底对文件做了什么

判断结果时这个区别很关键。两份 20 MB 的文件合并出 40 MB,并没有丢数据——页面是被复制的。如果「压缩」把扫描件压得很小、但文字再也选不中,那说明页面被光栅化了、文字层没了。两种都是合理结果,只是只有一种适合你手上的文件。

你操作时浏览器下载了什么

页面本身、界面代码,以及——只有需要渲染页面时——按需加载(而不是随页面加载)的 pdf.js。pdf.js 的 worker 由 pdf.reeff.app 自己提供,而不是公共 CDN:这个文件在构建时被复制到站点里,从而去掉了一个第三方依赖,避免工具卡在一个被拦截的请求上。

这些请求里都不含你的文档。你的文件通过浏览器的 File API 读进本机内存,输出以本地 blob 交还给你,由浏览器自己变成下载。没有可 POST 的端点:这些工具根本没有服务端组件。

自己验证一遍

  1. 01开着开发者工具打开工具页

    按 F12(Mac 上是 ⌥⌘I),切到 Network 面板,勾上「Preserve log」。过滤器留在「All」,不要在观感上给自己省事。

  2. 02清空列表,然后处理一个文件

    点一下清除按钮,选一份 PDF,像平常一样把工具跑完。

  3. 03看请求列表

    你会看到页面资源、需要渲染时出现的 worker,以及以本地 blob 形式出现的你的文件。没有 multipart/form-data 的 POST,也没有任何请求的请求体是你的 PDF。

  4. 04断网再跑一次

    页面加载完之后关掉 Wi-Fi,再跑一遍工具,它照样能完成。会上传的工具做不到这一点。

本地方案的边界在哪

  • 真正的天花板是内存,而且它跟像素有关,跟兆字节无关。算一下:一页 A4 在 150 DPI 下约 1240 × 1754 像素,在变成 JPEG 之前大约要占 8 MB 位图。一次只渲染一页的工具会稳定在这个量级;需要把全部页面同时放在内存里的任务就不行。
  • 扫描件没有文字层。要选中、搜索或提取文字就需要 OCR,而 OCR 模型远比一页 JavaScript 大——所以我们不提供,而不是提供一个很差的版本。
  • 合并必须在下载开始前把成品文档放进内存。四百页很轻松,两个 G 的包在任何浏览器上都不行。
  • 设备之间不同步,因为没有账号也没有历史。这就是取舍:没有同步,也就没有东西可以泄露。

什么时候本地工具反而是错的

对一份五兆的发票来说,本机处理是默认正确答案;但对下面这几类活儿,它是错的。把话说清楚只花一段,却能省掉一个失望的读者。

  • 你要从扫描件里取出文字。那是文字识别:模型动辄几十兆,在标签页里跑不好。请用桌面软件或服务——同时读一下那个服务会拿你的文件做什么。
  • 文件比机器剩余内存还大。500 MB 的扫描件可以本机拆成四份再合回去,但没人想每周做两次;这时候老实答案是找一台真机器跑批处理。
  • 活儿是一晚上一百个文件。浏览器一次处理一份文档很强,凡是需要定时的,都该放在你自己控制的服务器上。
  • 你要的是能证明「文件没被改过」的签名。把一个手写签名贴进 PDF,只是一张签名的图片,证明不了是谁画的——「没有打印机也能签 PDF」那篇里写的就是这个区别,并告诉你哪些文档该去找基于证书的电子签名服务。
  • 你要的是带色彩管理或 PDF/X 的打样文件。浏览器渲染出来的是 sRGB;印厂要的是带输出意图的 CMYK,那是另一条完全不同的流程。

为什么这样做

服务端转换器有带宽账单、有「文件存哪」的决策、有一个队列,还被迫要在隐私政策里写一段「我们在一小时后删除你的文件」。浏览器端工具这些都没有。网络差的时候它也更快,因为文件根本没有走网络。

代价是我们事后帮不了你:标签页崩了,我们这边没有副本可以恢复。所以每个工具都保持你的原文件不动,只产出一个新的下载。