在线 PDF 展平,免费

将所有表单域和注释展平为静态页面内容。即时结果,不上传服务器。

您的文件永不离开您的设备
将 PDF 拖放到此处 或点击浏览

支持 PDF 文件 · 最大 100 MB

展平选项
关于 PDF 展平: 此工具将所有交互式表单域、按钮和注释转换为静态页面内容。视觉外观完全保留,但字段变得不可编辑。这对于定稿已填表单、归档文档和防止意外修改 PDF 很有用。客户端处理确保您的数据保持私密。

工作原理

  1. 在上方选择或拖放一个 PDF 文件。
  2. 选择要展平的元素(表单域和/或注释)。
  3. 点击「展平 PDF」在您的浏览器中处理文件 · 不上传任何内容。
  4. 立即下载已展平的 PDF,其中所有交互元素都已转换为静态内容。

为什么要展平 PDF?

展平 PDF 对于定稿文档、防止意外修改和确保跨系统兼容性至关重要。展平表单时,所有已输入的数据都会变为永久性、不可编辑的内容。这对法律文件、合同、已完成的申请和档案至关重要。展平还会略微减小文件大小,并确保 PDF 在所有设备和应用中的显示完全一致,因为不再需要解析表单。

会展平什么?

何时展平 PDF

常见问题

展平后 PDF 的外观会不同吗?

不会。展平会保留 PDF 的精确视觉外观。所有表单域、注释和内容与展平前完全相同。只是移除了交互性。

可以撤销展平吗?

不能。PDF 一旦展平,原始表单域和交互元素就与页面背景合并了 · 您无法恢复它们。如果您认为以后可能需要修改,请始终保留原始 PDF 的备份。

如果 PDF 没有表单域会怎样?

如果 PDF 不含任何表单域或注释,文件仍会被处理,但不会执行展平。输出文件与输入文件相似。可安全地展平任何 PDF,即使不含交互元素。

我的 PDF 会发送到服务器吗?

不会。整个展平过程都在您的浏览器本地完成。您的 PDF 从不离开您的设备,完全保证隐私和安全。

展平会减小文件大小吗?

会略有减小。移除表单域定义可根据 PDF 结构将文件大小减小 1–5%。但展平主要用于定稿文档,而不是压缩。

文件大小限制是多少?

工具支持最大 100 MB 的 PDF。处理时间取决于文件大小和复杂度。大多数 PDF 可在数秒内展平。

「展平 PDF」究竟意味着什么

「展平」是那种 PDF 工具的动词,根据展平的对象不同,实际上指代几种真正不同的操作,这种区分很重要,因为操作的成功与失败原因各不相同。表单字段展平是本工具默认执行的操作。从 AcroForm 角度看,PDF 表单字段是一种逻辑构造:文档目录中有一个字段对象,带有像 FirstName 这样的名称和像 Sasha 这样的值,页面上还有一个或多个 widget 注释来视觉呈现这个字段。widget 知道画什么,是因为它的外观字典(/AP)指向一个小的内容流,该流包含绘制操作符、嵌入字体和文本。字段和 widget 是两个不同的对象:一个存储数据,另一个存储图像。展平颠倒了这种关系:外观流被直接绘制到页面的内容流上,就好像它一直是页面的一部分,然后字段和 widget 对象被删除。像素看起来完全相同,但表单结构已经消失。

注释展平是非表单注释的类似操作:便签、高亮、删除线、手绘、文本框标注、印章。每个标记注释也有一个外观流(/AP/N),阅读器用它来绘制标记;展平将该流写入页面并移除注释对象。视觉标记保留,点击、选择、编辑或删除标记的能力消失。本工具默认同时展平表单字段和注释;上面的两个复选框允许你独立禁用任一选项,如果你想保留一种交互性而移除另一种。

透明度展平是另外一回事:它将带有半透明对象的 PDF 转换为一系列完全不透明的拼贴块,合成后呈现相同效果的操作。PDF/A-1 归档转换需要这一步,因为 PDF/A-1 不允许透明度。PDF/A-2 及以后版本原生支持透明度,跳过这一步。本工具不执行透明度展平,术语重叠很不幸,但两者操作截然不同。如果你需要 PDF/A-1 合规,先用本工具展平表单和注释,然后运行一个专门处理透明度步骤的 PDF/A 转换器。

本工具如何工作

本工具使用 pdf-lib,这是由 Andrew Dillon 编写并自 2018 年起以开源形式维护的 JavaScript PDF 库。pdf-lib 用 TypeScript 实现,编译为约 1.1 MB 的纯 JavaScript,没有原生或 WebAssembly 依赖。它在任何 JavaScript 环境中运行:这里是浏览器标签页,但也可以是 Node.js、Deno、React Native 和 service worker。这个库是浏览器端 PDF 操作的事实标准:被 Documenso 使用,被几个主要 SaaS 产品的 PDF 编辑功能使用,被无数内部工具和表单处理流水线使用。

当你选择 PDF 时,浏览器的 File API 将原始字节直接交给运行在页面 JavaScript 引擎中的 pdf-lib。pdf-lib 将文件解析为对象模型,遍历 AcroForm 树以计算字段数,将计数暴露给页面,然后等待「展平」按钮。当你点击「展平」时,选定的选项被传递给 pdf-lib 的 form.flatten() 方法,该方法迭代每个字段,重新生成外观流以捕获当前值,将外观流复制到每个 widget 所在页面的 widget 矩形位置,然后从文档中移除 widget 和字段对象。结果字节被序列化为一个 Blob,页面将其包装成下载 URL。在展平过程中不会触发任何网络请求。你可以验证没有上传:在点击「展平」之前打开浏览器开发者工具的「网络」选项卡,运行操作,观察是否有任何包含文件内容的请求。不会有任何请求。

AcroForm 结构,简述

当 PDF 包含交互式表单时,文档目录包含一个 /AcroForm 条目,指向一个 AcroForm 字典。字典的关键字段是 /Fields(字段对象的数组,每个都有部分名称、当前值、字段类型和 widget 注释引用的 kids 数组)、/DR(默认资源字典,包含被字段外观流引用的字体和色彩空间)、/DA(默认外观字符串,一行内容流片段,例如 0 0 0 rg /Helv 12 Tf,设置默认文本颜色、字体和大小),以及 /NeedAppearances(一个布尔标志)。

/NeedAppearances 标志很重要,因为 pdf-lib 的展平遵循每个 widget 中存储的外观。当标志为 true 时,阅读器应在显示前重新生成外观流,因此磁盘上的流可能是过时的。经验法则是在展平之前重新生成外观,本工具会为你做这件事。一个字段可以在不同页面上有多个 widget 注释(对单选按钮组或重复签名块很有用);一个 widget 只能属于一个字段。widget 本身只是带有 /Subtype /Widget 的注释,包含指向字段对象的父引用、指示在页面何处绘制的 rect,以及在那里绘制的 /AP/N 外观流。

PDF 表单简史

注释的世界

PDF 定义了约 25 种注释子类型。展平操作需要处理的,大致按频率排序:Text(便签图标加弹出窗口);Highlight、Underline、Squiggly、StrikeOut(文本标记组,每个都有 /QuadPoints 数组,描述要绘制的四边形);FreeText(直接放在页面上的矩形文本注释,用于标注和内联标签);Line、Square、Circle、Polygon、PolyLine(形状组);Ink(数字笔或触控笔的手绘笔迹);Stamp(印章图像,如「Approved」或「Confidential」);FileAttachment(带附件的图标);Caret(小小的「在此插入文本」标记,通常与 Highlight 配对);Popup(包含对用户可见评论文本的浮动窗口,与其父标记注释一起展平);Widget(表单字段组,通过 AcroForm 展平而非注释展平处理)。

每种注释类型都有自己的外观规则,但展平操作不需要了解它们;它只是将注释 /AP/N 流中的内容渲染到页面上。没有 /AP 的注释(一小部分,主要是格式错误的 PDF)无法可靠地展平,通常被原样保留。Link 注释(可点击的 URL 热点)技术上是注释,但通常不被本工具展平:视觉指示(带下划线的文本)已经是页面内容的一部分,没有图形需要嵌入,因此移除链接只会删除点击目标。

驱动 PDF 展平的真实工作流

常见陷阱及其含义

仅浏览器与云端展平

每个云端 PDF 展平服务(Smallpdf、ILovePDF、PDF24 web、Adobe Acrobat Online、Sejda、DocHub 以及十几个较小的)都将你的 PDF 上传到运营商的服务器,在那里运行展平,然后将展平后的副本作为下载返回。PDF 通过公共互联网以 TLS 加密传输,根据运营商不同在其存储中停留几分钟到几天的时间窗口,由运行在运营商基础设施上的运营商 PDF 库展平,然后被删除。隐私政策通常承诺在几小时到一天内删除、传输中使用 TLS,以及(对于较大运营商)经 ISO/IEC 27001 认证的基础设施。运营商有商业理由遵守这些承诺。但他们也有日志、备份快照和事件响应数据流,这些一般不在删除承诺的覆盖范围内。

本工具不上传 PDF。pdf-lib 代码在你的浏览器标签页中运行,通过 File API 接收文件字节,在 JavaScript 引擎中执行展平,将展平的字节作为 Blob 返回到同一标签页。你可以证明没有上传:在点击「展平」之前打开「网络」选项卡的开发者工具,运行操作,观察是否有任何带有文件内容的请求被触发。pdf-lib 代码在页面加载时从 CDN 加载一次,并被浏览器缓存;展平操作不再发出网络请求。权衡的是功能范围:云服务通常将 OCR、Word/Excel 转换或激进压缩与展平捆绑在一起。这里浏览器端的展平只做展平。对于 OCR 或格式转换,云服务是正确选择;对于隐私态势重要的敏感文档,浏览器才是。

更多常见问题

本工具处理哪些表单类型?

AcroForm 的所有变体:文本字段、复选框、单选按钮、下拉列表、列表框、按钮和签名字段(视觉 widget,不是加密签名)。XFA 表单不受支持,因为 XFA 的动态布局需要 Adobe 的专有 JavaScript 和布局引擎。如果你的表单只有 XFA,展平会成功,但会让表单保持交互;在 Adobe Acrobat 中打开 PDF 并保存为 Reader 扩展 PDF 会将大多数 XFA 表单转换为 AcroForm 等效物,然后本工具可以将其展平。

我能只展平一页或只一个字段吗?

不能。本工具展平整个文档。选择性展平(一次一个字段或一次一页)需要 Adobe Acrobat Pro 或从自定义脚本调用的开发库。对于大多数工作流,无论如何整个文档的展平就是你想要的,因为「有些字段静态,其他可编辑」很少是意图。

这会保留书签、元数据和附件吗?

是的,对于书签(文档大纲)、文档元数据(标题、作者、主题、关键词、创建和修改日期)、嵌入文件和附件、可选内容组(图层)以及非表单内容的带标签 PDF 可访问性结构都会保留。与表单相关的标签随字段一起被移除,这是展平的预期行为。当「展平注释」未选中时,超链接保留;当两个选项都选中时,Link 注释热点也会被移除(可见的下划线文本保留)。

密码保护的 PDF 怎么办?

展平无法在加密的 PDF 上运行:pdf-lib 需要读取表单结构,而读取被解密所阻止。先用 免费在线 PDF 解锁 解锁 PDF,然后展平。如果你希望展平输出受密码保护,之后通过 PDF 密码保护 运行它。三步骤的解锁、展平、保护序列是「完成并重新保护」归档流水线的标准流程。

这与打印为 PDF 一样吗?

实际上相似,结构上不同。打印为 PDF 通过操作系统的打印流水线对页面进行光栅化或重新强加,通常会作为副作用展平字段,但也会重新编码图像、以不同的子集重新嵌入字体,有时会更改页面大小或边距。本工具的展平直接操作 PDF 对象结构,精确保留原始图像、字体和页面几何。当你想要一个新的光栅化副本时使用打印为 PDF;当你想要仅移除了表单结构的原始 PDF 时使用展平。

有桌面或命令行等效物吗?

pdf-lib 在 Node.js 中运行(npm install pdf-lib),展平调用相同:await form.flatten() 然后 await pdfDoc.save()。对于命令行,qpdf 有部分等效物(qpdf --flatten-rotation --generate-appearances),它处理外观重新生成但不处理表单移除步骤;pdftk 的 flatten 操作处理移除但跳过外观重新生成。Adobe Acrobat Pro 的「展平字段」菜单项原生处理两个步骤,是行为对等的参考。

相关工具