Eu fiz algo parecido alguns anos atrás. Não cumpriu todos os seus critérios "rígidos". Funcionou assim:
-
Eu coloquei uma área "clicável" de tamanho 2x2, dificilmente detectável, em algum lugar aleatório em uma das bordas de uma página aleatória em PDF. Não é muito provável que isso seja descoberto por acidente (de qualquer maneira, entre a carga de outros pontos de acesso clicáveis, obviamente, que estavam no PDF ...).
-
Se você clicar no link, ele levará você para uma página da Web
http://my.own.site/project/87245e386722ad77b4212dbec4f0e912
, com alguns pontos de "errata" inventados. (Eu mencionei que87245e386722ad77b4212dbec4f0e912
era o hash MD5 do nome da pessoa + dados de contato que eu mantinha armazenados em uma tabela de banco de dados?): -)
Obviamente, isso não protege contra impressão + digitalização + ocr-ing ou contra um ciclo de "refriação" de PDF. E também depende de algum grau de "segurança pela obscuridade".
Aqui está como você usa o Ghostscript para adicionar um ponto de acesso clicável no canto inferior esquerdo da página 1 de 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
Para tornar a área clicável maior e visível, altere os parâmetros acima da linha de comando como:
[....]
-c "[/Rect [1 1 50 50]" \
-c " /Color [1 0 0]" \
[....]
Ainda mais simples seria gerar e manter um hash MD5 do PDF em seu banco de dados. Será uniq para cada PDF que você criar, por causa dos documentos UUID e CreationDate e ModDate dentro de seus metadados. Claro, isso também só permite rastrear os PDFs originais em sua forma digital ...