Hintergrund
PDF-Dokumente können verschlüsselt und mit einem Rechtekonzept versehen sein. Dies kann beispielsweise zur Folge haben, dass ein Dokument verbietet, gedruckt oder modifiziert zu werden. Es ist Aufgabe einer PDF-verarbeitenden Anwendung, diese Berechtigungen zu respektieren.
Die in der jadice document platform mitgelieferten Komponenten berücksichtigen die gesetzten Rechte und nehmen ihre Funktion nur dann war, wenn dies auch erlaubt ist. Die Frage danach, wann eine Funktionalität aufgrund gesetzter Rechte ermöglicht werden sollte, lässt sich jedoch nicht pauschal beantworten. Da jadice als mächtige Toolbox viele verschiedene Einsatzszenarien ermöglicht, muss die Fragestellung im Kontext der jeweils resultierenden Gesamtanwendung betrachtet werden.
Um Integrationen nicht ungewollt in eine rechtliche Grauzone zu bewegen, handeln die in der document platform mitgelieferten Komponenten generell eher restriktiv. Da nicht bekannt ist, was mit den Dokumentdaten getan wurde, besteht im Zweifelsfall keine Möglichkeit über die Ausführung einer Funktionalität bei geltenden Rechten zu entscheiden. Da eine Entscheidung getroffen werden muss, kann diese nur negativ ausfallen und die Ausführung wird im Zweifelsfall eingeschränkt.
Technische Grundlage: Permissions und Intents
Die technische Grundlage zur Abbildung von Rechtesystemen in der jadice document platform wird durch die Klassen Permission
und Intent
gebildet. Ausprägungen von Permission
repräsentieren eine konkrete Berechtigung – wie beispielsweise die Frage danach, ob gedruckt werden darf oder nicht. Jede Permission
bezieht sich auf ein Objekt, auf dem die Rechte gesetzt werden; dieses Bezugsobjekt definiert den Gültigkeitsbereich einer Berechtigung. Typischerweise handelt es sich dabei um Bereiche wie ein Seitensegment, eine Annotation oder ein gesamtes Dokument. Die Klassen, die solch einen Bezugsbereich repräsentieren, implementieren typischerweise das Interface PermissionProvider
um kenntlich zu machen, dass sie Berechtigungen zur Verfügung stellen.
Um Berechtigungen einzuholen muss deklariert werden, welche Handlungsabsicht innerhalb einer laufenden Anwendung besteht. Beispiele für solch eine Absicht sind der Druck eines Dokuments oder das Aufbringen einer Annotation. Programmatisch werden diese Handlungsabsichten durch Intent
-Objekte kundgetan.
Jede Permission
kann befragt werden, ob aus ihrer Sicht etwas gegen die Ausführung einer Handlungsanweisung spricht. Dies geschieht über die Methode vote(…)
. Als Rückgabewerte kann die Permission
mit Erlaubnis, Verbot oder Enthaltung stimmen. Da innerhalb des jeweiligen Gültigkeitsbereichs mehrere Permission
s gesetzt sein können, müssen alle berücksichtigt werden. Die zusammengefassten Rückgabewerte bestimmen letztlich darüber, ob die Ausführung einer Handlungsanweisung erlaubt wird oder nicht.
Verwendung im Kontext PDF Security
Beim Lesevorgang eines PDF-Datenstroms wird das im PDF-Standard definierte Berechtigungsmodell respektiert und auf jadice Berechtigungen abgebildet – wie diese Abbildung konkret vorgenommen wird, kann aus Tabelle 6.1 und 6.2 der jadice document platform Dokumentation (http://support.levigo.de/products/jadice/documentplatform/current/german/content/bk02ch06s01.html) entnommen werden. Es handelt sich somit um formatspezifische Berechtigungen. Aufgrund dessen sowie der losen Kopplung von Seiten, Seitensegmenten und Dokumenten, wird das PageSegment
als Gültigkeitsbereich der aus PDF resultierenden Permission
s definiert. Dadurch wird sichergestellt, dass andere Seitensegmente – wie beispielsweise die Annotationen auf einer Seite – bei der Anzeige nicht beeinträchtigt werden.
Obwohl die Berechtigungen für Seitensegmente gelten, kann trotzdem die Situation eintreten, dass andere Seitensegmente davon beeinflusst werden. Dies ist beispielsweise dann der Fall, wenn eine gesamte Seite verarbeitet werden soll – beispielsweise um diese zu drucken oder deren Inhalt in die Zwischenablage zu übernehmen. Als konkretes Beispiel führt das Fehlen einer Berechtigung zur Modifikation auf einem einzelnen Seitensegment dazu, dass die gesamte Seite nicht gedruckt werden kann. Da für den Druckvorgang implizit die Segmente einer Seite zusammengeführt werden, entspricht dies einer Modifikation und kann daher nicht erlaubt werden.
Kann sichergestellt werden, dass das gedruckte Resultat dem Urzustand entspricht, steht es Integratoren frei, den Druck dennoch zu erlauben. Dies kann aber nicht pauschal entschieden werden, sondern muss im Kontext der Anwendung betrachtet werden. Die vollständige Umsetzung des PDF Security Konzepts kann letztlich nur durch die Integration erfolgen und liegt daher im Verantwortungsbereich der Integration. Es ist Aufgabe des Integrators, sicherzustellen dass die Vorgaben aus dem PDF-Standard beachtet werden.