跳到主要内容
PulsarKit

PDF涂黑的正确做法(只盖黑框不等于删除)

在PDF的一段文字上画一个黑框,并不会删除下面的文字。这个错误已经让真实的文件泄露过。

作者:PulsarKit ·

为什么盖住文字不等于删除文字

在PDF编辑器里给一段文字画上黑色矩形,只改变了一件事:屏幕上能看到什么。之后再用PDF扁平化处理也没用:它把矩形固定进页面,下面的文字对象却原封不动。文字本身还在页面底层内容流里原来的位置。任何人打开文件,选中那块区域并复制,大约一秒钟就能把本该隐藏的文字放进剪贴板,不需要特殊工具,用人人都有的阅读器就行。这不是假想的风险。法院文件、警方报告和政府合同都曾这样公开泄露,而且不止一次,因为有人理所当然地以为盖上黑框,信息就没了。

唯一能删除文字的方法

PDF里真正的涂黑,是把含有敏感文字的页面重建成位图,也就是一张图片,而且涂黑的方框要在生成图片之前就画进这些像素里,而不是事后盖在现有页面上。新页面上放的是图片,不再是原来的文字对象,所以文件里没有任何文字可以选中、复制或提取。文字不是被藏起来了,而是没有了。做得好的涂黑工具会在完成后重新读取自己的输出,如果在本该清理过的页面上还检测到文字,就拒绝交出文件,PDF涂黑就是这样做的。它会检查自己的工作,而不是假定处理已经成功。有没有这一步检查,决定了一个工具是能放心用来处理法院文件,还是每次都得你手动核对。

只有你动过的页面才应该改变

为了遮住某一页上的两行字而把整份文档转成位图,会让整个文件膨胀好几倍,还会让每一页都无法搜索文字,包括那些根本没有要隐藏内容的页面。你没有标记的页面保持原样,逐字节复制过去,仍然可以选中、可以搜索,大小也还是原来那么小。这个代价最好提前心里有数,免得到时候意外:涂黑过的页面会明显变大,因为一页文字的照片要几百KB,而文字本身只是几KB的指令。这些分量,就是让文字真正消失的代价。

某一页上遮住的名字,可能还留在文档属性里

把可见的文字涂黑,只解决了一半问题。标题、作者、主题、关键词和生成文件的软件,都存放在文档的元数据里,和页面上画的任何东西都无关。第四页上涂黑的名字,如果别人一打开文件属性面板就能看到同一个名字,那就毫无意义。元数据应该在删除可见文字的同一次处理中清除,或者紧接着用PDF删除元数据清除,不要事后才想起来,也不要留给收到文件的人自己发现。

找出每一处,而不只是你注意到的那一处

在真实的文档里,一个名字、一个账号或一种日期格式,很少只出现一次。在整个文件里搜索,而不是一页一页人工浏览,才能找出每一处,而不只是某人粗略翻看时碰巧看到的两三处。按模式搜索而不是按精确词句搜索,才能找出格式固定的内容,比如社会保障号码或电话号码,无论它出现在哪里;每个匹配项都按页码列出,这样就不会误把本该保留可见的内容涂黑。

为什么扫描页面需要完全不同的方法

搜索只对真正可选中的文字有效,而扫描文档里没有这样的文字。它从一开始就是一张页面的图片,所以无论图片里那个名字出现多少次,在搜索框里输入它都什么也找不到。这时的办法是手动框选区域,而不是搜索。两种做法的结果完全相同,因为无论原文件有没有可选中的文字,页面在两种路径下都会转成位图。

本文用到的工具

继续阅读