Я сделал нечто подобное несколько лет назад. Это не отвечало всем вашим "жестким" критериям. Это сработало так:
Я поместил едва различимую «кликабельную» область размером 2x2 точки в какое-то случайное место на одной из границ случайной страницы PDF. Маловероятно, что он был обнаружен случайно (среди множества других, очевидно, интерактивных горячих точек, которые все равно были в PDF ...).
Если вы нажмете на ссылку, вы попадете на веб-страницу
http://my.own.site/project/87245e386722ad77b4212dbec4f0e912
с некоторыми вымышленными пунктами. (Я упоминал, что это87245e386722ad77b4212dbec4f0e912
был MD5 хэш имени человека + контактные данные, которые я хранил в таблице БД? :-)
Очевидно, что это не защищает от печати + сканирования + появления или от цикла «повторной обработки» PDF. И это также зависит от некоторой степени «безопасности по неизвестности».
Вот как вы используете Ghostscript, чтобы добавить такую активируемую точку доступа в левый нижний угол страницы 1 файла random-in.pdf:
gs \ -o random-out.pdf \ -sDEVICE=pdfwrite \ -dPDFSETTINGS=/prepress \ -c "[ /Rect [1 1 3 3]" \ -c " /Color [1 1 1]" \ -c " /Page 1" \ -c " /Action <</Subtype /URI" \ -c " /URI (http://my.own.site/87245e386722ad77b4212dbec4f0e912)>>" \ -c " /Subtype /Link" \ -c " /ANN pdfmark" \ -f random-in.pdf
Чтобы сделать кликабельную область больше и заметнее, измените параметры командной строки, например:
[....] -c "[/Rect [1 1 50 50]" \ -c " /Color [1 0 0]" \ [....]
Еще проще было бы создать и сохранить MD5-хеш PDF в вашей базе данных. Он будет уникальным для каждого создаваемого вами PDF-документа из-за документов UUID и CreationDate и ModDate внутри его метаданных. Конечно, это также позволяет отслеживать только оригинальные PDF-файлы в цифровом виде ...