Фон
Используя LaTeX, чтобы написать книгу. Когда пользователь покупает книгу, PDF будет создан автоматически.
проблема
PDF должен иметь водяной знак, который включает имя человека и контактную информацию.
Вопрос
Какое программное обеспечение соответствует следующим критериям:
- Применяет зашифрованные, невидимые водяные знаки к PDF
- Открытый исходный код
- Независимость от платформы (Linux, Windows)
- Быстро (отмечает 200 страниц PDF менее чем за 1 секунду)
- Пакетная обработка (исключительно из командной строки)
- Устойчивый к сговору
- Не хрупкий (например, PDF -> EPS -> PDF по-прежнему содержит водяной знак)
- Хорошо документировано (показывает пример использования)
Идеи и ресурсы
Некоторые мысли и выводы:
- Обработка естественного языка (НЛП) водяными знаками.
- Примените стеганографию к случайно выбранному изображению.
- http://openstego.sourceforge.net/cmdline.html
Проблема с НЛП заключается в том, что грамматические ошибки могут быть внесены. Проблема со стеганографией заключается в том, что изображения поступают из кеша изображений, поэтому воссоздание этого кеша с изображениями с водяными знаками создаст задержку при создании PDF (я мог бы просто удалить одно изображение из кеша, но это не элегантное решение).
Спасибо!
pdf
encryption
batch
watermark
steganography
Дейв Джарвис
источник
источник
Ответы:
Я сделал нечто подобное несколько лет назад. Это не отвечало всем вашим "жестким" критериям. Это сработало так:
Я поместил едва различимую «кликабельную» область размером 2x2 точки в какое-то случайное место на одной из границ случайной страницы PDF. Маловероятно, что его обнаружат случайно (среди множества других, очевидно, интерактивных горячих точек, которые все равно были в PDF ...).
Если вы нажмете на ссылку, вы попадете на веб-страницу
http://my.own.site/project/87245e386722ad77b4212dbec4f0e912
с некоторыми вымышленными пунктами. (Я упоминал, что это87245e386722ad77b4212dbec4f0e912
был MD5-хэш имени человека + контактные данные, которые я хранил в таблице БД? :-)Очевидно, что это не защищает от печати + сканирования + вхождения или от цикла повторной обработки PDF. И это также зависит от некоторой степени «безопасности по неизвестности».
Вот как вы используете Ghostscript, чтобы добавить такую активируемую точку доступа в левый нижний угол страницы 1 файла random-in.pdf:
Чтобы сделать кликабельную область больше и заметнее, измените параметры командной строки, например:
Еще проще было бы создать и сохранить MD5-хеш PDF в вашей базе данных. Он будет уникальным для каждого создаваемого вами PDF-документа из-за документов UUID и CreationDate и ModDate внутри его метаданных. Конечно, это также позволяет отслеживать только оригинальные PDF-файлы в цифровом виде ...
источник
-dJPEQ=100 -dQFActor=1.0
в командную строку Ghostscript, чтобы убедиться, что вы будете поддерживать 100% качества JPEG. Но нет, я не заметил какого-либо ухудшения качества изображения в моих файлах, если использовал общую настройку-dPDFSETTINGS=/prepress
при перегонке любых PDF-файлов с помощью Ghostscript ....-dColorImageFilter=/FlateEncode
(это ZIP без потерь), чтобы переопределить стандартное=/DCTEncode
(это JPEG с потерями) в старых версиях GS. Так как GS v7.21 по умолчанию=/FlateEncode
все равно ... То же, что и для цвета, верно для-dGrayImageFilter=...
(-dMonoImageFilter=...
использует/CCITTFaxEncode
по умолчанию.)Очень сложный, и я не уверен, что это ответит на все ваши вопросы.
Я не уверен в едином решении, которое может сделать это, или рандомизировать.
Однако, если бы мне это было поручено, я бы подумал, что самый простой способ - сохранить документ в промежуточном формате, таком как отформатированный HTML или аналогичный.
Используя печатный CSS-файл или аналогичный, вы можете сделать макет идентичным книге и использовать некоторый сценарий для рандомизации изображения, содержимого или чего-либо еще, а также компонент PDF на стороне сервера, который собирает документ обратно.
тогда - например, когда кто-то покупает документ, ваш скрипт покупки может случайным образом выбрать число, которое идентифицирует механизм защиты (например, первое изображение, второе изображение, текст где-то и т. д.), а затем сгенерировать уникальную ссылку для скачивания.
Когда вызывается эта ссылка для скачивания, она проверяет номер, выполняет операцию и компилирует в pdf, а затем загружает ее клиенту.
Опять же, я знаю, что это будет нелегко / прямо, но вы не просите чего-то легкого, и это лучший способ, который я могу придумать.
источник