PDF 里的“删除”为什么不是删除:增量更新和被盖住的原文
我上周帮一个客户看一份已经“清理”过的合同 PDF。对方说机密段落都涂掉了,发的也是最终版。我用两行命令把原文抽了出来——那几段还在。
很多人以为 PDF 的“删除”和 Word 一样:删了就没了。其实不是。PDF 大部分编辑器做的是“增量更新”(incremental update):新内容追加到文件末尾,旧的字节并不消失。你用白块盖住一段、或者把它调成白色,文件里那段文字依然以明文存在,任何人用 pdftotext 都能抽出来。
几种最常见的“假删除”:
一是涂白、盖白块。视觉上没了,文本层还在。pdftotext contract.pdf - | grep -i "机密" 一搜就有。
二是删了段落却用增量方式保存。旧版本整个留在文件里。qpdf --qdf contract.pdf out.qdf 打开看一眼,能找到那些被“删掉”的对象。
三是红action 工具只盖不真红。真正的 redaction 是把内容从内容流里移除、回填黑块,而不是在表面画一个白矩形。两者肉眼看一样,抽文本时天差地别。
我现在的做法很笨也很稳:清理完,一定跑两遍——pdftotext 抽文本,再 strings 扫一遍,确认被删的词两边都搜不到,才发出去。五分钟,能堵住大部分“以为删了其实没删”的坑。
你们团队发出合同前怎么处理 PDF 清理?是有人逐份肉眼看,还是有自动校验?
记录 PDF 底层结构、水印与元数据清理的实现细节。PDFnoted
浙公网安备 33010602011771号