简体中文

文档 · PDF 工具包

浏览器选项卡如何在不上传的情况下读取和重写 PDF

· 工作原理

pdf 隐私 网络工作者

在浏览器内存中移动并作为本地下载返回的文档
原始 ToolAcre 矢量图

“在您的浏览器中运行”是您可以理解和测试的声明。这篇文章遵循 PDF 从文件选择器进入内存,通过 Web Worker,然后以下载的形式返回,解释每个步骤的作用以及为什么不涉及服务器。

文件选择器不是上传 - 选择文件时的困惑时刻看起来像发送它

文件选择器类似于上传控件,因为许多站点会立即发送所选文件。仅选择并不需要这种转移。在此工具包中,浏览器授予页面对用户选择的 File 对象的访问权限,控制器在将 PDF 字节读入选项卡内存之前验证其类型和大小。

边界是可观察的:选择文档会更改本地界面状态,显示其名称、大小和页数,并启用操作。它不会将文件发布到应用程序端点。 PDF 上限为 50 MB,映像上限为 30 MB,在昂贵的处理开始之前强制执行。

从磁盘到内存 — 文件 API 如何将页面传递给网站自己的 JavaScript 可以读取的字节数组

对于 PDF,`arrayBuffer()` 提供字节,`Uint8Array` 保存它们以供工作程序调用。图像批次的处理方式不同,以避免不必要的第二次读取:保留原始文件对象,直到浏览器图像准备好为止。这些是当前浏览器上下文内的内存操作,而不是远程存储或帐户历史记录。

第一个 PDF 通过工作器中的 `info` 调用进行检查,因此在确定页数时,大文档不会阻止绘制。该选项卡可以暂时将源字节、解析器状态、准备好的资源和最终输出保存在一起。清除或关闭很重要,因为本地处理仍然消耗实际设备资源。

大多数 PDF 转换使用工具包工作线程; PDF 解析和画布编码有单独的分割

合并、分割、提取、删除、重新排序、旋转、水印和最终图像到 PDF 程序集通过专用模块工作程序调用 pdf-lib。进度和取消消息跨越该边界,而计算工作远离主接口线程。清除文件会终止工作程序,而不是等待垃圾收集。

PDF-to-image 是重要的例外。 pdf.js 使用自己的工作程序进行解析,但浏览器画布编码必须保留在主线程上。渲染器在页面之间进行让步,以便控件和进度可以重新绘制。说每个转换完全在一个工作人员中运行将与已发布的实现相矛盾。

解析和写入是本地阶段,但图像准备和画布编码可以在主线程上运行

一般管道是读取、解释、转换和编码,但每个操作选择自己的具体机制。页面复制操作要求 pdf-lib 构建一个新文档。旋转会更改附加页面元数据。水印附加图纸。 PDF-to-image 渲染页面,而 images-to-PDF 在工作程序组装之前准备浏览器解码的图像。

这些区别会影响保真度。复制页面保留可选择的内容;将它们渲染为 PNG 或 JPEG 会将页面变成像素并丢失其文本层。非 PNG/JPEG 图像可以在 PDF 汇编之前被解码并重新编码为 PNG。 “本地”描述的是数据移动,而不是一种通用的转换算法。

下载的是一个本地对象 — Blob 和对象 URL 如何为您提供一个在任何服务器上都不存在的文件

每个操作都会返回字节或 ZIP,接口将其包装在具有适当媒体类型的 Blob 中。结果操作调用共享 `downloadBlob` 帮助程序,该帮助程序创建浏览器下载而不是导航到服务器文件。在用户将生成的工件保存到普通设备存储之前,它已存在于内存中。

组织器缩略图也使用 Blob 对象 URL,但它们的生命周期是明确的:旧 URL 在新加载之前被撤销,并且所有 URL 在销毁或清除时都被撤销。这种区别可以防止本地隐私声明隐藏内存泄漏。下载后,该文件遵循普通设备备份和共享规则。

为什么限制是设备的内存——原始的、解析的结构和重写的副本同时存在于 RAM 中

本地工作受到 RAM 和浏览器策略以及显式输入上限的限制。 PDF 可以作为源字节、解析的对象模型、传输的工作缓冲区、预览和序列化输出同时存在。光栅页面添加大型画布,因此渲染器会测量像素预算,并可能在分配之前缩小比例。

即使低于 50 MB,手机也会比台式机更快陷入困境,因为压缩文件大小对解码的页面图像影响不大。关闭不相关的选项卡、处理更少的页面或使用更大的设备来完成要求较高的作业。每个 PDF 的硬上限仍为 50 MB,每个映像的硬上限仍为 30 MB;记忆力并不是声称没有固定限制的借口。

其他 ToolAcre 产品可能会使用该网络;同意的生产分析也是分开的

该存储库指出,另外两个 ToolAcre 产品按设计连接网络,因此必须对每个产品的本地行为进行验证,而不是在整个站点上进行推广。 PDF 操作代码没有携带文档的端点,并且自动隔离测试会检查处理过程中的不变性。

站点范围的分析只能在获得同意后在规范生产主机上运行。其 ToolAcre 事件允许列表不包括文件名、内容、粘贴文本、URL 和确切的文件大小,而 Google 脚本仍保留隐私政策中描述的第三方代码。静态资产或分析请求与文档上传不同。

要点 — 每一步都发生在您的设备上,PDF 工具包页面和网络面板可让您确认

完整的生命周期是可见的:选择一个文件,验证并读取它,使用适当的工作器或渲染路径在本地进行转换,将输出包装在 Blob 中,下载它,然后清除缓冲区和对象 URL。不需要应用程序服务器来执行这些页面操作。

将“在浏览器中”视为您可以检查的架构而不是口号。监视请求,阅读特定于操作的注释,并在完成后使用清除文件和释放内存。该控件会释放管理器图像、删除引用并终止工作人员,从而减少内存压力和选项卡中敏感文档材料的生命周期。先下载,验证保存的文件,然后清除;本地处理故意不为过早丢弃的结果提供远程回退。