# PDF 涂黑 字是删掉的，不是盖上一个黑块

字从文件里删掉，然后再搜一遍这个文件来证明。

> 把字从 PDF 里拿掉，而不是在上面画个黑块。字是从绘制这一页的指令里删掉的，做好的文件会被重新打开搜一遍，证明它们真的没了，而且什么都不会上传。

这是一个浏览器交互工具，地址是 https://abox.tools/zh/redact-pdf/。文件在运行该浏览器的设备上处理。主动分享和可选联网功能都在页面上说明。下文是它的文字说明；使用工具请打开该地址。

## 你的文档**在浏览器里处理**，无须上传处理。

你选的那份文档，打开、读取、修改、写回，全都在这台机器的内存里完成，用的是从这个地址发来的代码。这里根本没有能做上传的东西，这一页的另一头也没有服务器可以接收。文件不会离开这个标签页，你搜的那些词也不会。

- ✗ 不上传
- ✗ 不用注册
- ✓ 断网也能用
- ✓ 开源
- ✓ 文件留在你的设备上

## 怎么涂黑一份 PDF，让那些词真的消失

1. **选 PDF。** 一次只处理一份文档，这是故意的。涂黑是一件必须一页一页看过去的活，而一个让你在这份文件里勾词、又悄悄把它用到另一份上的工具，正是错的东西被发出去的那条路。文件由浏览器直接从你的硬盘读取。
2. **说清什么要走。** 把词打进去，姓名、地址、案号都行，它们出现的每一处都会连着所在的那一行、带一个勾选框列出来。框旁边那些检测项会去找电子邮箱、卡号、IBAN、身份证号和社保号，以及电话号码。它们只是列给你看，绝不替你勾上，因为一个模式分不清电话号码和案号。
3. **读这一页，从上面挑词。** 这一栏显示的是文档里实际存着的文字，顺序是读的人复制时会得到的顺序。点任何一个词就是拿掉它，再点一下就是留下它。划了横线的就是要消失的，所以这一步既是挑选也是复核，按下按钮之前每一页都值得这么过一遍。
4. **拿掉它们，再读那行写着已经查过的字。** 字被删掉，它们空出来的宽度保留着，你要的话上面画一个黑块，同样的词也会从书签、批注、表单域和文档属性里拿走。然后做好的文件会在这里重新打开、重新搜一遍。要是你拿掉的某个词还搜得到，你拿不到下载，只会拿到一句说明这件事的话。

## 说得更细的版本

[怎么把 PDF 涂黑，让文字真的消失](https://abox.tools/zh/guides/redact-a-pdf/): 在 PDF 阅读器里画的黑块，通常把词原封不动地留在了下面，复制粘贴就能拿回去。真正的涂黑拿掉的是什么，词在页面之外藏身的四个地方，以及发出去之前怎么检查一个文件。

## 工具箱里还有

- [PDF 转 CSV](https://abox.tools/zh/pdf-to-csv/): 将检测到的 PDF 文本表格转换成电子表格可打开的行。
- [收据与发票识别](https://abox.tools/zh/receipt-invoice-extractor/): 读取照片，检查字段和裁剪结果，准备供邮件应用使用的压缩附件和合计。
- [图片转 PDF](https://abox.tools/zh/images-to-pdf/): 把你的图片装进一个文档。
- [文档扫描](https://abox.tools/zh/document-scanner/): 把纸拍下来，回来的是一份看着像扫描的东西。

## 常见问题

### 这跟在 PDF 阅读器里画个黑块有什么不一样？

在阅读器里画的方块是一个批注，一个带位置的对象，存在页面旁边。它下面的文字分毫未动。谁把那块区域选中按复制、谁把文件在别的程序里打开、谁拿任何一个文本提取器过一遍，都能把词拿回去。有些阅读器提供的「redact」命令确实会真的执行删除，也有好几款只提供画方块。这个工具没有什么方块可以挪开：字是从页面的绘制指令里切掉的，而那个黑块，如果你留着它，是事后画在一处早就空了的位置上。

### 我怎么知道那些词真的没了？

因为这个工具会在你的机器上查一遍，并且把数量给你看。文件写完之后，它会被这一页上同一个读取模块重新打开，每一页重新读，每一个书签、批注、表单域和属性都收集起来，再把你拿掉的每一个词搜一遍。结果那一行会写清原来有多少、现在还剩多少。答案要是不对，这一次就失败，什么都不给下载。你也可以事后自己查：在任何阅读器里按 Ctrl+F 搜那个词。

### 拿掉一个词，这一页别的地方会移位吗？

不会。文字是靠一支笔在页面上往前推着画出来的，所以删掉五个字符，照常理会把这一行剩下的部分往左拽五个字符。被删部分的确切宽度会从字体自己的度量里量出来，再作为一条字距指令放回去，那条指令只挪笔，不画任何东西。表格的列还是对齐的，合计还在它自己的表头下面。

### 扫描出来的文档能涂黑吗？

图不能，而且它照实说，不装。扫描件是一页纸的照片，上面的词是像素，没有可拿走的文字。不过扫描件常常还带着一层看不见的文字，是扫描仪的 OCR 写在图上面、为了让这一页可以搜索的。这个工具会找到那一层，从里面拿掉你挑的内容，并在页面上告诉你图没有变。于是搜索和复制再也找不到那个词，而看着这一页的人还是读得到。要处理图本身，[图片涂黑](https://abox.tools/zh/redact-image/)会去覆盖像素。

### 文档里那些不在页面上的部分呢？

也一起处理，因为涂黑漏掉的通常正是那里。同样的词会从书签、批注和便签里拿走，从表单域里填过的内容里拿走，从给屏幕阅读器的文字里拿走，也从阅读器用来*代替*页面上那些字符去复制的替换文本里拿走。最后这一样存在的意义是让连字和行末断开的词能正确复制，而它里面可以装下一整句话。文档属性和 XMP 包整个删除。附件和文件打开时会运行的东西全部丢弃，因为这两样都没法拿你要删的词去搜。

### 我的文档会被上传吗？

不会。文件的读取、修改和写出全都由你自己的浏览器在你自己的硬件上完成。这个工具根本没有服务器那一半，页面的 `Content-Security-Policy` 里写着它能联系的每一个地址，没有一个属于本站。你在搜索框里打的字，是拿来跟这个标签页内存里的文本比对的，它也不去任何地方。

### 为什么不能像别的工具那样在页面上拖一个框？

因为画出一页来意味着一个完整的 PDF 渲染器，字体、渐变、透明度、混合模式全都要，那是一兆以上的引擎要去取来运行，而本站根本不发这种东西。这件事反倒正合适：拖一个方块选中的是*纸上的一块区域*，而纸上的一块区域跟它下面的文字不是同一样东西，黑块那个失误正是从这里开始的。你拿到的是文档的文字，按阅读顺序排好，每个词都可以点。而且这也是唯一一种能告诉你「眼前这些词到底是不是文字」的视图，一张页面的图片说不出这一点。

### 做好的文件到哪儿都打得开吗？

打得开。输出写成 PDF 1.5，或者你给的那份文件所需要的最高版本，而 1.5 是 2003 年以后出的每一个阅读器都懂的。页面上的东西没有一样被重新编码：字体、图片和矢量图形逐字节原样通过，所以留下的文字还跟原来一样可以选中、可以搜索。

### 它能打开带密码的 PDF 吗？

不能，而且这是故意的。加密的文档会被拒收，并附上一句说明，密码是空的时候也一样，而很多扫描仪和复印机就是那样存的。去掉一个文件的保护，跟从里面拿走几个词是两件事，一个悄悄替你做掉的工具，做的是你没要求过的事。

### 有大小限制吗？要钱吗？

工具里没有写死任何限制。限制是你自己的机器：处理期间文档放在内存里，所以笔记本吃下几百兆不会有意见，再往上某处就开始吃力了。免费，没有账号，不用登录，也没有试用期。本站靠广告养活，广告那边拿不到关于你文档的任何东西。

### 断网能用吗？

能。把页面加载一次，然后断网，它照样能用。这也是证明什么都没被上传的最简单办法。要是有个工具把你的文档送出去让别人涂，拔掉网线的那一刻它就停了。

## 这条隐私承诺怎么核实

- **黑块不是涂黑，而这里也不会在任何东西上面画一个。** 几乎每一个说自己能涂黑一页的程序里，不管是 PDF 阅读器、文字处理软件还是设计工具，那个黑块都是存在文字旁边的一个对象，而不是存进文字里。文字还在那里，在同一个文件的同一个位置，把那块区域选中按复制就拿回来了。就是这个失误让法院文书、情报报告，以及 2025 年 12 月美国司法部大批文件里被涂黑的姓名公之于众，而那些姓名在几小时内就被读了出来。这个工具是把字从绘制页面的指令里删掉。这里没有哪个黑块底下还压着什么，因为底下什么都没有。
- **做好的文件在交给你之前，会在这里重新打开、重新搜一遍。** 在那之前，上面这些话都只是这个工具在给自己判卷。所以那些马上就要变成你下载内容的字节，会被当作陌生人寄来的一样重新交回同一个读取模块：每一页重新读一遍，每一个书签、批注、表单域和文档属性都收集起来，然后去搜你拿掉的那些词。数量会写在结果里。要是有东西活了下来，这一次就报告为失败，不给下载。
- **词不会离开这个标签页，搜索也不会。** Content-Security-Policy 里写着这一页能联系的每一个地址，没有一个属于本站。这个工具没往那份名单里加任何东西，因为它没有自己的联网功能，连可选的都没有。你在搜索框里打的字，是拿来跟这个标签页内存里的文本比对的一串字符，这两样都没有地方可去。
- **涂黑是最经不起上传的那件事。** 人们拿去涂黑的东西，正是它不该被上传的理由。证人证言、诊断书、要交给房东的银行流水、带着一个客户名字却要发给另一个客户的合同。把这些交给陌生人的服务器去掉私密部分，意味着私密部分先完完整整地到了那边，而留在他们那里的也正是那一版。这一页没有另一半。
- **留下的部分原样传过去。** 一页上会变的字节，只有那些包含了被删字符的文字绘制指令。其他每一条指令，以及这一页用到的每一个字体、图片和线条，都按进来时的样子精确复制。不重绘，不重新编码，也不重排。删掉部分的宽度会量出来，再作为一条字距指令放回去，于是这一行的其余部分还停在文档原本安排的位置上。
- **它拿不掉照片里的词，而且会说清哪些页面是这种。** 扫描出来的一页是一张图。上面的词是像素，不是文字，这里没有任何东西能碰到它们。要是这份扫描件带着扫描仪 OCR 做的那层看不见的可搜索文字，这个工具会把那一层拿掉，而搜索和复制原本找到的正是它。同时它会在页面上明说：图里的词还看得见。要盖住那张图是另一件事，负责覆盖像素的是[图片涂黑](https://abox.tools/zh/redact-image/)。
- **文档不再交代自己从哪里来。** 属性和 XMP 包每次都会被清掉：没有 producer 那一行，没有创建日期，没有作者，没有标题，也没有排版软件留下的那些私有块。一份从页面上删掉了姓名、属性里却还写着 `张某_和解稿3.docx` 的文件，不是一份涂黑过的文件，而这件事不该交给一个勾选框去管。
- **加密的文件会被退回，而不是打开。** 带密码的 PDF 会被拒收，包括扫描仪用空密码生成、技术上打得开的那一类。去掉一份文档的保护，跟从里面拿走几个词是两件事，而悄悄替你做掉，对一个替你干活的工具来说是件出人意料的事。
- **谷歌加载了什么，又拿不到什么。** 广告和统计脚本来自谷歌。这两个都拿不到关于你文档的任何东西：文件拿不到，页面拿不到，姓名、大小、页数，以及你搜过的词，都拿不到。读取、修改、写出 PDF 的每一行都由本站自己提供，也都写在仓库里。
- **捐赠按钮加载了什么，又拿不到什么。** 页面顶部那个「Buy me a coffee」按钮由 cdnjs.buymeacoffee.com 的脚本画出来，字体取自 Google Fonts。它就是个链接而已，不会报告访问，也拿不到关于你或者你文档的任何东西。你不点它就什么都不会发生，点下去到的是别人的网站。
- **断网也能用。** 把网络断掉，这一页上的一切照样运转。这是最简单的证明。要是有个工具把你的文档送出去让别人涂，它就停了。

**你可以自己核对。**上面这些不用你信。这个页面是仓库里的模板和配置生成出来的，构建脚本你能读，也能自己跑一遍，跑出来的结果就提交在 `dist` 分支上。拿实际发给你的内容，跟你自己从源码构建出来的结果对一遍就知道了： https://github.com/A-Box-of-Tools/website

最值得先读的几个文件：`config/site.toml` 里是 Content-Security-Policy，一页上的每个词是怎么找到、怎么定位的，看 `src/shared/pdf-text.js`；删除本身在 `src/edit.js`，从页面指令里切掉了什么、为了让这一行的其余部分不移位又放回了什么，都在那里。这几个都够不着网络，旁边负责读和写的部分也一样。
