Eine Lösung für die mich warscheinlich einige Schlagen würden wäre, dass du deine PDF's in ein geheimes verzeichnis irgendwo im system legst und bei einem download eine PHP-Funktion die angeforderte Datei (ein ID-Wert z.B. dem in einer datenbank ein Dateiname zugeordnet wurde) kopiert und temporär an einen ort kopiert wo die datei dann für 30 minuten bereitliegt und danach via einer Cleanup-Funktion gelöscht wird.
Das sähe dann so aus:
Request user mit GET ID=001
Datenbank-Lookup 001=meinpdf.pdf
kopiere meinpdf.pdf nach pfad/session_meinpdf.pdf
Eintrag in die Datenbank: Session X, File meinpdf.pdf
downlod
chronjob/workarount checkt alle x minuten für abgelaufene daeien.
Ob die PDF dann allerdings in den 30 Minuten 1 mal oder 100 mal geladen wurde ist imo nicht möglich zu erfassen.
grüsse