几年前我做了类似的事情。它没有达到你所有的“硬”标准。它的工作方式如下:
我在随机PDF页面的一个边框上的某个随机位置放置了几乎不可检测的2x2点大小的“可点击”区域。它不太可能被偶然发现(无论如何,在PDF中其他非常明显可点击的热点的负载中......)。
如果您点击链接,它会带您进入一个网页http://my.own.site/project/87245e386722ad77b4212dbec4f0e912
,其中包含一些制作的“勘误”要点。(我是否提到87245e386722ad77b4212dbec4f0e912
过这个人名的MD5哈希值+我保存在数据库表中的联系人数据?:-)
显然,这不能防止打印+扫描+ ocring或PDF“refrying”循环。它还依赖于某种程度的“默默无闻”。
以下是使用Ghostscript将这样一个可点击的热点添加到random-in.pdf第1页左下角的方法:
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]" \
[....]
更简单的方法是在数据库中生成并保留PDF的MD5哈希值。由于文档UUID以及其元数据中的CreationDate和ModDate,因此对于您创建的每个PDF都将是uniq。当然,这也只允许以数字形式跟踪原始PDF ...