# 如何一键、批量、快速去除扫描版 PDF 上的顽固水印

> 本文开放前 70% 正文，剩余内容会员可见。

原文：https://utgd.net/article/21251

出于各种原因，我在工作中常常需要去除 PDF 文件中的水印。此水印，特指“watermark”，既非以标注格式浮于 PDF 页面的文本，这种情况，在多数阅读器中可当即移除，毫无技术难度；也非和正文融为一体、展平后的图像，这种情况恐怕只能期待人工智能有所表现。

在技术上，这些水印其实是难以直接编辑的文本层。如果你把 PDF 视作一场皮影戏，或者回忆一下 Photoshop 中分图层的编辑界面，那么 PDF 大约也有类似的分层构造，而那些顽固的水印也只是其中的一层。问题在于，文本层形式的水印通常不能直接删除，要么得去一些很吊诡的软件里碰运气，看看有没有擦除功能；要么一步到位，怒斥重金买下万能 PDF 编辑工具 Adobe Acrobat Pro，但问题都在于，你可能得用橡皮擦一点一点扣掉它们，非常浪费世界。

但如果转换视角，避免在“移除水印”的功能主义小道上走到黑，转向材料思维，将 PDF 作为一种材料，追问消除水印背后的对象和原理，则不难找到更简单的方法，并且可以一次性、批量、瞬间移除水印。本文介绍一简一繁两种方案，供诸位参考。

## 极简方案：线性化（linearized）

如前文所述，PDF 文件中其实没有“水印”这个对象，有的只是文本层。那么，若破坏文本层，岂不就能消灭水印？这一思路完全可行，并且不需要任何特殊的工具，例如在 macOS 上，原生的预览工具就能完成：打开 PDF 文件并直接导出，同时选中线性化（linearized）。

所谓线性化，乃一种令 PDF 元素逐步加载的技术，通常用于在线呈现 PDF，如此处理后，无需等待 PDF 下载完成，即可像浏览普通网页一样看一点、加载一点。此技术有大量副作用，往往导致元素显示异常，实际上，我几乎不曾见过哪个网站在使用线性化的 PDF，无论上市公司的财报还是政府官方的文件，我印象中几乎全是普通的 PDF。

——然而，若是巧妙利用线性化的破坏效果，其实可以一口气消灭水印！预览工具的线性化效果正好可以移除文字层，对于扫描版 PDF 来说，这基本意味着消灭了水印，并且不会触及图像和标注等内容。

惟需注意，若文件本身有 OCR 文字层，则也会遭到牵连，尚需在处理后重新识别文本。

## Ghostscript 方案

线性化方案终归属于歪打正着，万一哪天 Apple 突发奇想优化了预览工具的线性化功能，锉钝了这把利刃，上一节的方案反倒会失效。此外，我也不能保证其他 PDF 阅读器的导出效果与预览工具一致。

本节介绍另一种思路：依托瑞士军刀式的 PDF 处理工具 Ghostscript，精确移除文本层，而非简单将其破坏。Ghostscript 是一款命令行工具，并无直观的图形界面，但恰好移除水印正需要一键式的操作，不妨在稍稍掌握 Ghostscript 命令后将其打包为自动化动作（稍后附下载链接）。

以下 Ghostscript 命令可以指定移除 PDF 中的文本层，但理论上不影响其他内容：

```
gs -o "处理后.pdf" -sDEVICE=pdfwrite -dFILTERVECTOR -dFILTERTEXT  "处理前.pdf"
```

Ghostscript 方案有的放矢，且不依赖原理未知的封闭软件（比如上一节所依托的预览工具），将来系统升级时或许更

---

[前往标准阅读页](https://utgd.net/article/21251?audience=web)
