PDF information entries
Additional entries can be set by hyperref, e.g.:
\hypersetup{
pdfinfo={
User={John Doe},
% ...
},
}
Some PDF viewers are not able to show non-standard entries, but others do (AFAIK newer AR/Win versions).
Adding data to the PDF data structures
A key value pair can be put into a dictionary, e.g.:
\pdfcatalog{/User (John Doe)}
Or even an object can be made:
\immediate\pdfobj{(John Doe)}
\pdfcatalog{/User \the\pdflastobj\space 0 R}
Important issues are:
- It should be valid PDF code, otherwise PDF viewers might complain.
The example used a name object for the key '/User' and a PDF string
(John Doe) for the value.
- The data should be linked to an existing used object. The latter example
links the object, created by
\pdfobj to the Catalog. Otherwise unused
object could be removed by post-processing.
Using/modifying existing data
The creation date of the document could be changed via \pdfcreationdate
to assign different seconds for the users.
Changing the output
The previous methods would not survive a print of the PDF document into a new PDF document. Therefore the output could be slightly changed, e.g. by making
inter-word spaces larger/smaller at some places for the different versions.
Data protection
Instead of plain code as in the examples above (for simplicity) I would use
some kind of MD5/SHA/... or encrypted versions of the data and add
them safely as hex dump.
Then, if you find an online copy, you can verify, that the embedded
data are correct and not altered by the uploader. Otherwise an uploader
could maliciously alter the data to claim someone else.
P.S.: Example code is given for pdfTeX, the other driver need other commands/specials, if they support the same feature.