先说一个几乎每周都在发生的场景。
某人投简历。简历是拿老同事发的模板改的,改完导出 PDF,一封封投出去。HR 收到文件,在文档属性里看到:作者「张某某」,公司「XX科技有限公司」,最后修改者是另一个陌生名字,创建时间是三年前。
投简历的人姓李,简历里写的现任公司也不是 XX 科技。这份材料在第一眼就交代了两件事:这不是他自己做的,以及他改的东西来自哪。没人会因为这个直接刷掉一个候选人,但它是个减分项,而且是完全可以避免的减分项。
DOCX 本质上是个 ZIP

把 .docx 改名成 .zip 解压,能看到里面的目录结构。元数据主要在两个文件里。
docProps/core.xml 存的是 Dublin Core 那套通用属性:
dc:creator— 作者,通常是创建这个文件的那台电脑上 Word 的用户名cp:lastModifiedBy— 最后修改者,最容易出问题的字段,只要文件在别人机器上被打开保存过一次就会变成那个人dc:title/dc:subject/dc:description— 标题、主题、备注cp:keywords— 关键词dcterms:created/dcterms:modified— 创建和修改时间,带时区cp:revision— 修订次数,一个数字,能看出这文件被存过多少回cp:category/cp:contentStatus
docProps/app.xml 存的是应用层统计:
Company— 公司名。这个字段来自 Office 安装时填的组织信息,很多人从来没改过,还是入职第一家公司时 IT 装机填的。TotalTime— 累计编辑分钟数。一份"精心准备"的标书如果显示 TotalTime 是 12 分钟,观感很微妙。Template— 用的模板文件名。XX集团标准公文模板.dotx这种名字本身就是信息。Manager— 经理姓名Application/AppVersion— Word 版本Pages/Words/Characters— 统计数字TitlesOfParts— 文档各部分标题、样式名,有时会带出你没料到的内容
ODT(LibreOffice)结构类似,元数据在 meta.xml 里:meta:initial-creator、meta:editing-duration、meta:editing-cycles。
真实会出事的几类场景

求职。 前面那个例子。补充一条更隐蔽的:如果你把在职公司的电脑上做的简历直接投出去,Company 字段就是现东家。万一 HR 认识那边的人,或者猎头顺手一查,你在找工作这件事就不再是秘密。
投标。 标书里最常见的翻车是模板残留。Template 字段写着上一个客户的名字,或者 dc:title 还是"某某项目技术方案 V3",而这个"某某"是采购方的竞争对手。评标环节有人真会去看这些。
法律文书。 律师函、合同草案发出去之前如果没关修订记录,对方能看到你们内部改了什么、删了什么、批注里讨论了什么底线。修订记录里的作者名还会暴露是团队里哪个人在坚持哪个条款。
匿名来源提供的文档,如果作者字段带着真名,保护就形同虚设。
"删了看不见但还在"的两个坑
Word 的修订与批注
接受所有修订、删除所有批注之后,文档看起来是干净的。但有几处可能还留着东西:
- 未接受的修订藏在被折叠或隐藏的部分里——页眉页脚、文本框、脚注尾注、嵌套表格中的修订,"全部接受"有时覆盖不到某些对象。
- 自定义 XML 部件——一些企业系统会往 DOCX 里塞业务数据,用户界面完全看不到
- 嵌入对象:粘进来的 Excel 表格是完整工作簿,你只显示了一个区域,但整个文件都在里面,包括其他工作表和被隐藏的行列。这条踩的人不少。
- 隐藏文字(设了"隐藏"格式的文本),屏幕上不显示,XML 里完整存在
Word 自带的"检查文档"(文件 → 信息 → 检查问题 → 检查文档)能查出大部分,值得在发送前跑一遍。
PDF 的黑框
这个坑非常经典,而且出过多次严重事故——政府机构公开文件时,把敏感段落用黑色矩形盖住导出 PDF,结果记者用鼠标框选那块区域,Ctrl+C,粘贴出来就是完整的原文。
原因很简单:PDF 里的黑框是一个绘图对象,画在文字图层上面。文字对象本身没有被删除,只是被视觉上遮住了。选中、复制、或者用任何文本提取工具,拿到的都是底层的原始文字。
同类问题还有:用图片盖住的内容,图片底下的原始对象还在;页面裁剪(crop)只改变显示区域,被裁掉的内容仍在文件里;图层隐藏同理。
真正的涂黑(redaction)必须把底层内容对象从文件里移除,而不是盖住。专业 PDF 工具有专门的 redaction 功能,执行后原文字被真删。如果没有这类工具,最稳妥的土办法是:涂黑后把 PDF 每页光栅化成图片再重新组成 PDF——变成纯图像,底下什么都没有了。代价是文件变大、不能搜索、不能选中。
PDF 自身的元数据在文档信息字典和 XMP 里:Author、Title、Subject、Keywords、Creator(原始编辑软件)、Producer(生成 PDF 的那个组件)、CreationDate、ModDate。Producer 经常出卖你——"Microsoft: Print To PDF"、某个国产 PDF 工具的名字、某个在线转换服务的水印式标识,都会写在里面。
清理的实际操作
DOCX 这边比较彻底。 元数据就是 ZIP 里的几个 XML 文件,重写这几个文件里的字段,或者直接把这些字段清空,结果是确定的、可以复查的。用任何解压工具打开清理后的文件,看 core.xml 和 app.xml 里还剩什么,一目了然。img.diy 的文档工具做的就是这件事,处理全程在浏览器里完成,文件不上传。
PDF 这边要如实说:浏览器环境下的清理是尽力而为。 文档信息字典和 XMP 元数据可以清掉,这部分是可靠的。但 PDF 的结构比 DOCX 复杂得多——增量更新会把旧版本的数据保留在文件尾部、对象流里可能有嵌套的元数据、附件和嵌入文件、JavaScript 动作、表单字段的历史值、数字签名相关的信息。纯浏览器端做不到像专业桌面工具那样逐对象重建整个文档。
所以给个明确的分级:
- 要清 PDF 的基本元数据(作者、标题、生成器):浏览器工具够用。
- 文档涉及敏感涂黑或法律风险:用带 redaction 功能的专业工具,或者光栅化。别指望元数据清理解决内容层的问题。
- 最保险的通用做法:把最终版重新"打印"成 PDF(Print to PDF),这会生成一个全新的文件结构,绝大部分历史数据不会带过去。缺点是书签、超链接、可访问性标签可能丢失。
发布前检查清单
按文件类型走一遍:
DOCX / ODT
1. 接受或拒绝所有修订,删除所有批注
2. 跑一次 Word 的"检查文档",处理它报出来的所有项
3. 检查页眉页脚、文本框、脚注里有没有漏掉的修订
4. 确认嵌入的 Excel/图表对象里没有多余数据
5. 清理 core.xml 和 app.xml 的作者、最后修改者、公司、模板、编辑时长
6. 解压复查一遍(这一步真的值得做,尤其是重要文件)
PDF 1. 确认涂黑是真 redaction 不是画黑框——自己框选复制试一下 2. 检查有没有附件、表单字段残值 3. 清理文档属性(作者、标题、主题、关键词) 4. 高敏感场景:光栅化或重新打印生成
通用
- 文件名本身别带信息(标书_报价800万_底价750万.pdf 这种真见过)
- 如果是从模板改的,把模板痕迹全清一遍
- 发之前用另一台设备或另一个工具打开看一次
元数据清理这件事的好处在于结果完全确定:字段清了就是清了,可以打开文件核对。这跟图片里那些藏在像素中、删不掉也验不准的东西不是一回事——那部分的技术边界另有一篇。文档这边,你花五分钟就能把该管的都管住。
顺带提醒,简历如果附了作品图,图片里的 EXIF 也一起看看,那篇清单里列了该查哪些字段。
