通过混淆文本来防止从 PDF 文档中提取文本

博客分类:PDF.NET

2020/05/18

VintaSoft Imaging .NET SDK 支持对所有字体类型进行文本编码混淆。

目的是什么?例如,您发布一份开放获取的文档(或将其提供给第三方),并且您不希望文档中的文本可以通过在任何 PDF 查看器中复制/粘贴轻松提取。

方案一:使用 PDF 文档安全设置的标志禁止文本提取,但设置是否生效取决于用户用于查看文档的应用程序。如果 PDF 查看器忽略 PDF 文档安全设置,则文本很容易被提取。

解决方案 2:完全移除文本编码信息,混淆字体字形,混淆页面上的符号代码。这可以通过 VintaSoft Barcode .NET SDK 中提供的文本编码混淆功能来实现。 VintaSoft PDF .NET Plug-in。混淆机制会完全移除文本编码信息,混合字体和页面上的符号字形,并复制字体和符号字形。以这种方式混淆的文本只能使用 OCR 提取。

让我们使用 VintaSoft PDF Editor Demo 应用程序来查看对简单 PDF 文档(document-without-text-obfuscation.pdf)的混淆效果。

该文档包含两页。四个句子使用了三种不同的字体。

第一页和第二页的第一个句子使用了相同的字体。
Text before text encoding obfuscation in PDF document

文本提取面板和字体查看对话框显示所有符号的文本编码均正确。
Text characters before text encoding obfuscation in PDF document

可以使用应用程序菜单调用文本编码混淆对话框:文本 -> 混淆文本编码 -> 设置。
Standard settings for text encoding obfuscation in PDF document

让我们使用默认设置执行混淆操作,并查看混淆后的输出文档:document-with-default-text-obfuscation.pdf

文档查看显示字体已完全更改,字形被随机重新定位。提取的文本可以在文本提取面板中查看。
Text after text encoding obfuscation in PDF document

由于两页的第一句话都使用了相同的字体,因此两页上第一个单词(绿色高亮显示)的符号相同:
The same word is written using one font after text encoding obfuscation in PDF document

您可能会说:"我会编写一个简单的程序来提取文本。我会手动创建一个字符映射表并解码文本。"是的,这完全可行,尤其是在文档中只使用了少量字体的情况下。因此,我们实现了混淆设置,使得解码几乎不可能。

让我们再次打开文本编码混淆对话框,然后: Settings for strong text encoding obfuscation in PDF document

之后,让我们再次对 PDF 文档中的文本编码进行混淆,并查看混淆后的输出 PDF 文档:document-with-strong-text-obfuscation.pdf

现在我们可以看到,字母"e"使用了不同的字形,提取的文本将包含具有不同代码的该字母符号。
The same character is written using different glyphs after text encoding obfuscation in PDF document

第一行中的单词"Text"现在使用不同的字体书写。每种字体都使用其自身的随机位置和字形复制方式。现在,从第一页和第二页提取单词的结果截然不同:
The same word is written using different fonts after text encoding obfuscation in PDF document