Samstag, 13. Mai 2006

Geschützte PDFs drucken

Stein des Anstosses

Da ist in Neuenegg also die Ortsplanung in das Mitwirkungsverfahren eingetreten, doch der Ortsplaner entschied wohlwollenderweise, dass die Wohnbevölkerung die Unterlagen zwar digital betrachten, aber nicht ausdrucken dürfe.

Da eine Mitwirkung auch den freien Zugang zu den dazu benötigten Informationen über mehrere Medien (Bildschirm, aber auch als Hard-Copy) beinhalten sollte, entschied ich, eine kurze Robin-Hood-Aktion zu starten, um die wichtigsten Dokumente (Textwüsten von mehreren Seiten) druckbar zu machen.

Hintergründiges über das Format

Wieder einmal lernte ich etwas mehr über das PDF-Format kennen und den teilweise lächerlichen Schutz, den Adobe ursprünglich für dieses Dokumentenformat implementiert hatte.

PDF-Dateien sind im Grunde recht simpel gestrickt und arbeiten auf Box-Basis. Jedes Element (Text, Grafik) wird also in einer rechteckigen Box untergebracht, weshalb es sehr einfach ist, einen rudimentären Generator wie bspw. fpdf für PHP zu programmieren. Generiert man mit dieser Klasse PDF-Dateien, bewegt man sich low-level-mässig sehr nah an diesem Box-Model. Mittlerweile etwas intelligenter geworden, würde ich heute aber natürlich LaTeX zur Server-seitigen PDF-Generierung verwenden, wie dies bspw. Simon Bünzli mit der exzellenten Applikation ePhi seit längerem tut, um Präsenzlisten auszugeben (via Zope).

DRM

Im Laufe der Zeit hat Adobe viele zusätzliche Features eingebaut, womit das plattformübergreifende Format nun bei Version 1.5 1.6 angekommen ist. Insbesondere auf dem Gebiet von DRM & Co. hat sich – wohl auf Grund von Kundenwünschen – viel getan. Dokumente können granular mit einer Betrachtungs- und Druckberechtigung versehen werden, ja sogar das Kopieren von Textelementen (ja, man kann und darf normalerweise Text aus PDF-Dateien kopieren, nur wissen das 80% der Benutzer nicht) kann verboten werden.

Der Passwortschutz ist bei Vorlesungsunterlagen an der Uni sehr beliebt. Ohne Eingabe des Passwortes kriegt man nichts zu sehen. Dies ist die schwierigste Stufe des Kopierschutzes. Hier ist der gesamte Dokumenten-Inhalt verschlüsselt.

Die Dokumente zur Ortsplanung dagegen sind deutlich schwächer geschützt. Erkennen tut man dies daran, dass das Dokument auf dem Bildschirm erscheint, wenn man es öffnet. Erst wenn man die Druckfunktion aufruft, wird man auf den Druckschutz hingewiesen, den man durch die Eingabe des Passwortes übergehen kann.

Wie ich durch eigene Recherchen im Netz herausgefunden habe, wird der Druckschutz hier durch den Betrachter des Dokuments forciert, ausgelöst durch ein in der PDF-Datei abgelegtes spezielles Objekt, das wohl auch das (verschlüsselte) Passwort enthält.

Das Schlupfloch

Da Adobe das Format offengelegt hat, gibt es auch einige Open-Source-Utilities, die unter Linux & Co. PDF-Dateien anzeigen, ohne dass man sich die Adobe Reader-Bloatware (Windows-Version: 20MB) installieren muss.

Vor einigen Jahren erschienen nun aber Versionen von Open-Source-Viewern wie xpdf und Multivalent, die genau diese Anweisung innerhalb einer PDF-Datei („Viewer, lasse das Drucken nur mit korrekter Passwort-Eingabe zu!“) nicht beachteten.

Auf Grund einer Bestimmung von seiten Adobes, die in der Lizenz für das Dokumentenformat festhält, dass die Viewer solche Anweisungen aber beachten müssen, ansonsten die kostenlose Verwendung des Standards nicht erlaubt sei, rüsteten die Entwickler diese Funktion in den folgenden Jahren nach.

Nachtrag: Da steht es ja laut und deutlich:

Authors of software that accepts input in the form of the Portable Document Format must make reasonable efforts to ensure that the software they create respects the access permissions and permissions controls listed in Table 3.20 of this specification, to the extent that they are used in any particular document. These access permissions express the rights that the document’s author has granted to users of the document. It is the responsibility of Portable Document Format consumer software to respect the author’s intent.

Quelle: PDF Reference

Der Workaround

Mit Open Source-vertraute Leser ahnen es bereits: Die Quelloffenheit der Software erlaubt es natürlich nun, den Code nach dem entsprechenden Abschnitt zu durchforsten und diesen auszukommentieren, die Applikation zu kompilieren und PDF-Dateien wie anno dazumal auszudrucken.

Einfacher geht es, indem wie von Ralf König in seinem Artikel Probleme mit PDF-Dateien beschrieben auf Sourceforge einfach eine ältere Version der Viewer gesaugt wird, die vor Adobes aufbäumen kompiliert wurde.

Benötigt wird dazu die Datei Multivalent20040415.jar, die man hier findet.

Königs Anweisung

java -jar Multivalent20040415.jar tool.pdf.Uncompress non-printable.pdf

funktioniert hier unter Mac OS X 10.3 aber nicht. Nach weiteren Nachforschungen auf dem Netz fand ich dann aber eine andere Schreibweise, und damit hat es tatsächlich geklappt:

java -classpath Multivalent20040415.jar tool.pdf.Uncompress non-printable.pdf

Nachdem man diesen Befehl ausgeführt hat, befindet sich im aktuellen Verzeichnis die neue Datei non-printable-u.pdf, die problemlos ausgedruckt werden kann.

Liked this post? Follow this blog to get more. 

Tags:
Labels: Neuenegg

Kommentar erfassen