Is there a way to track when a PDF is opened? Perhaps by embedding some script into the pdf itself?
I saw the question below, and I suppose the answer is “no” for javascript, but I am wondering if this is possible at all.
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
The PDF standard includes support for JavaScript but as @Wes Hardaker pointed out, not every PDF reader supports it. However, sometimes some is better than none.
Here’s Adobe’s official Acrobat JavaScript Scripting Guide. What’s probably most interesting to you is the
docobject which has a method calledgetURL(). To use it you’d just call:Bind that event to the document’s open event and you’ve got a tracker. I’m not too familiar with creating events from within Adobe Acrobat but from code its pretty easy. The code below is a full working VS2010 C# WinForms app that uses the open source library iTextSharp (5.1.1.0). It creates a PDF and adds the JavaScript to the open event.
Some notes: Adobe Acrobat and Reader will both warn the user whenever a document accesses an external resource. Most other PDF readers will probably do the same. This is very annoying so for this reason alone it shouldn’t be done. Personally I don’t care if someone tracks my document opens, I just don’t want to get a prompt every time. Second, just to reiterate, this code works for Adobe Acrobat and Adobe Reader, probably as far back as at least V6, but may or may not work in other PDF readers. Third, there’s no safe way to uniquely identify the user. Doing so would require you to create and store some equivalent of a “cookie” which would require you writing to the user’s file system which would be considered unsafe. This means that you could only detect the number of opens, not unique opens. Fourth, this might not be legal everywhere. Some jurisdictions require that you notify users if you are tracking them and provide for a way for them to see what information you are collecting.
But with all of the above, I can’t not give an answer just because I don’t like it.