无需上传, 100% 本地处理, 无需账户

文章

为什么在 PDF 里涂黑文字常常没用

在一段文字上画一个黑色矩形,看起来像是文字消失了,但在大多数 PDF 编辑器里,其实并没有。被你遮住的字母仍然作为可选中的字符存储在文件里;那个方块只是叠加在它们上面的一个新图形。复制这一页、搜索它,或者用另一个阅读器打开它,这句被“遮盖”的话就可能重新出现。下面是这种情况为什么会发生,以及一种真正删除文字而不是隐藏文字的遮盖方法。

叠加一个图形不等于删除

PDF 页面把两类东西分开保存:文字对象(每一个都是带有位置和字体的字符),以及放置在页面上的绘图对象(包括你添加的任何矩形、高亮或注释)。当你在 PDF 阅读器里画一个黑色方块时,你添加的是一个位于现有文字对象之上的新绘图对象。这一页现在看起来像是被遮盖了,因为方块从视觉上盖住了字母。没有任何操作告诉文件去删除底下的文字对象,所以它们依然原样保留在原来的位置,内容也完全不变。

PDF 页面分为两层的示意图:底层是文字对象,上层叠加了一个绘图对象方块,视觉上盖住了字符,但并未删除它们

原始文字是如何重新浮现的

由于文字对象从未离开过文件,四种普通操作就能把它们暴露出来:选中并复制那行“被涂黑”的文字、在文档中执行文字搜索、用任何 PDF 转文本工具提取原始文字,或者用一个以不同顺序渲染文字对象和绘图对象的阅读器打开文件。这些都不需要特殊技能。这种情况已经不止一次公开发生过:一些公开发布的 PDF 在敏感段落上画了黑框,结果被发现底下仍然藏着可读、可复制的文字,这个失误因此登上了新闻,而不是被真正隐藏起来。

先把页面转换成图片

正确的做法是在遮盖之前,而不是之后,先移除文字层。用类似 pdf-to-image 这样的工具把 PDF 页面转换成普通图片,再用 image-redact 在这张图片的敏感区域上画框。此时页面上已经没有任何文字对象了,只剩下像素,所以这个方块下面已经没有任何可以恢复的内容。用 image-to-pdf 把遮盖后的图片重新组装成 PDF,原本敏感的文字就已经完全不存在了,只剩下一张部分区域被遮住的页面图片。

工作流程示意图:PDF 页面转换成图片,在像素上用不透明方块遮盖,再重新组装成一份底下没有任何可恢复文字的新 PDF

这样做需要付出什么代价

把页面转成图片,会把真正可搜索的文字变成一张静态图片,因此之后任何人阅读这份遮盖过的页面时,都无法再选中或搜索这一页的文字,不管是不是被遮盖的部分。对于你要保护的这一页来说,这是可以接受的代价:另一种做法,也就是保留文字层完整、寄希望于没人去检查,正是本文开头提到的那种失误。如果同一份文档中的其他页面没有敏感内容,可以保持不变,只对需要处理的页面进行转图片处理。

使用实心方块,并同时检查元数据

对文字来说,完全不透明的黑色或纯色方块是更安全的选择;如果模糊程度较轻,模糊滤镜有时可以被反向还原出较大号的普通文字,所以模糊更适合用在人脸或照片上,而不是句子上。遮盖可见页面,也不会动到文件的元数据:作者姓名、软件版本、嵌入照片中的 GPS 坐标,或编辑历史,都可能独立于页面内容之外泄露出去。如果这对你的文档很重要,在分享之前先检查一下文件自身的元数据揭示了什么。

本文涉及的工具

常见问题

在 PDF 阅读器里画一个黑色矩形,真的会删除下面的文字吗?

通常不会。除非该工具带有专门的遮盖功能,能够删除底层的文字对象,否则画一个图形只是在页面上叠加了一层。原始字符依然保留在文件里,可以被选中、搜索,或者用常见工具提取出来。

把敏感文字模糊化,比用方块遮盖更安全吗?

对文字来说,并不安全。对较大号的普通文字施加轻度模糊,有时可以被反向还原到足以猜出原始字符的程度,短单词或数字尤其如此。对文字来说,实心、完全不透明的方块,或者先转成图片彻底移除文字层,才是更安全的选择;模糊更适合用在人脸或一般照片内容上。

在遮盖之前先把 PDF 转成图片,会丢失什么重要的东西吗?

会失去在你转换的那些页面上选中或搜索文字的能力,因为它们变成了普通图片。对于你正在主动遮盖的那一页来说,这正是目的所在:敏感文字不再以可提取字符的形式存在。如果只对需要处理的页面进行转图片操作,没有敏感内容的页面仍然可以保持为普通的 PDF 页面。