VintaSoft Imaging .NET SDK поддерживает возможность обфусцирования кодировки текста для всех типов шрифтов.
Для чего это нужно? Вы выкладываете документ в открытый доступ (или передаете его третьему лицу) и не хотите чтобы из документа
можно было легко извлечь текст используя операцию копирования в любом просмотрщике PDF документов.
Решение 1: Запретить извлечение текста используя флаги настроек безопасности PDF документа, однако соблюдение этих настроек
будет зависть от приложения, которым пользователь просматривает документ.
Текст можно легко извлечь, если PDF просмотрщик игнорирует настройки безопасности PDF документа.
Решение 2: Полностью удалить информацию о кодировке, перемешать глифы в шрифте, перемешать коды символов на странице.
Это можно сделать используя функционал обфусцирования кодировки текста в
VintaSoft PDF .NET Plug-in.
Данный механизм полностью удаляет информацию о кодировке текста, перемешивает глифы символов в шрифте и на странице PDF документа,
дублирует шрифты и глифы символов. Текст обфусцированный таким способом можно извлечь только используя OCR.
Рассмотрим обфусцирование простого документа (
document-without-text-obfuscation.pdf)
используя
VintaSoft PDF Editor Demo.
Документ содержит две страницы. Четыре надписи написаны тремя разными шрифтами.
Первая надпись на первой и второй странице написана одним шрифтом.
Как видно из панели извлечения текста и диалога просмотра шрифтов все символы имеют правильные коды.
Диалог настроек обфускации текста можно вызвать с помощью меню "Text -> Obfuscate Text Encoding -> Settings".
Давайте проведем обфускацию с настройками по умолчанию и рассмотрим полученный документ с обфусцированным текстом:
document-with-default-text-obfuscation.pdf.
Видно что в обфусцированном документе полностью изменились шрифты, также случайным образом переставлены местами глифы. Извлекаемый нечитабельный текст можно увидеть в панели извлечения текста.
Т.к. первая надпись на обоих страница сделана одним шрифтом, то символы для первого слова (выделено зеленым) на обоих страницах одинаковые.
Вы скажете: "Я напишу простую программу которая извлечет текст. Вручную составлю таблицу соответствия кодов и расшифрую текст."
Да. Это возможно, особенно если в документе используется мало шрифтов. Поэтому мы сделали настройки обфускации которые делают данную задачу практически не решаемой.
Давайте еще раз откроем диалог настроек обфускации текста и:
- включим опцию дублирования шрифтов - каждая страница будет использовать собственный набор шрифтов в каждом из которых глифы будут перемешаны случайным образом
- включим опцию дублирования глифов в шрифте - одинаковые символы на странице будут использовать разные глифы символов в шрифте, код глифа будет выбран случайно.
После этого проведем еще раз обфускацию текста и рассмотрим новый документ с обфусцированным текстом:
document-with-strong-text-obfuscation.pdf.
Теперь мы можем увидеть что для буквы "e" использовались разные глифы и в извлеченном тексте это будут символы с разными кодами:
Слово "Text" из первой строки теперь написано разными шрифтами, в каждом шрифте использована своя случайная перестановка и свое дублирование глифов. Теперь результаты извлечения этого слова с первой и второй страницы совершенно не похожи: