Infos zur /Launch Lücke in Adobe Reader

Newsam 07.04.2010Kommentare deaktiviert

Adobe Systems hat einige Informationen zu /Launch Lücke in Adobe Reader bereitgestellt. Weitere Infos


PDF/A und Interaktive Formulare – eine Einführung

Artikelam 23.03.2010Kommentare deaktiviert

Formulare sind ein wesentliches Merkmal von PDF welches bereits früh, seit PDF 1.2, in den PDF Sprachumfang aufgenommen wurde. Auch der PDF/A Standard kennt Formulare. Doch für welche Art von Formularen ist PDF/A geeignet?

Hier gilt es sich einmal vor Augen zu führen, das PDF/A als Archivformat konzipiert ist. Formulare haben deshalb Eingang in den Standard gefunden, da in der Praxis Daten mit einer (PDF/A) Formularvorlage zusammen gespeichert werden. Das Formular definiert also Position und Layout der Daten.

Doch eignet sich PDF/A damit auch als Grundlage für interaktive Formulare? Die eindeutige Antwort lautet Nein. Denn interaktive Formulare benötigen Logik – zum Formatieren der Dateneingabe, um Berechnungen vorzunehmen, um Daten zu validieren, um Felder zu sperren und wieder zu entsperren und vieles mehr.

Wie können also interaktive PDF Formulare und PDF/A zusammenspielen?

Für die Praxis relevant ist es interaktive Formulare, nachdem diese „abgeschlossen“ wurden, also keine Eingabe mehr erforderlich ist zur Archivierung in PDF/A zu überführen. Dies kann – je nachdem in welcher Form das Formular vorliegt – mit unterschiedlichen Aufwänden verbunden sein. Hierzu einmal folgende Beispiele:
Fall 1: Das Formular an sich ist PDF/A konform, lediglich die Formularlogik weicht vom Standard ab, indem JavaScript Code enthalten ist
Hier könnte eine geeignete Software, bevor das Formular in das Archiv überführt wird, den JavaScript Code aus dem Formular entfernen. Es ist jedoch darauf zu achten, dass dies auch die Anzeige von Daten – zum Beispiel die Formatierung eines Tagesdatums – betreffen kann, je nachdem wann der Code zu Ausführung kommt. Einige PDF/A Konverter können dies vornehmen ebenso wie spezielle PDF Reader.
Fall 2: Das Formular an sich ist nicht konform zum PDF/A Standard. es handelt sich aber um ein statisches Formular. Hier könnte eine geeignete Software, sowohl die nicht konformen Elemente „reparieren“ als auch den JavaScript Code entfernen. Einige PDF/A Konverter können auch dies vornehmen.
Fall 3: Es handelt sich um ein dynamisches PDF Formular welches mit dem Adobe LiveCycle Designer erstellt wurde. Hier ist festzustellen, das auf den ersten Blick zwar eine PDF Datei vorliegt, jedoch das eigentliche Formular ein Objekt innerhalb des PDF darstellt, welches nicht durch den PDF Sprachumfang sondern durch die XFA Spezifikation definiert wird. Eine direkte Überführung in PDF/A ist hier nicht möglich. Hier ist es notwendig das Formular nach PDF/A zu rendern, zum Beispiel mit Hilfe von Adobe LiveCycle ES2 Output.
Eine zusätzliche Problematik entsteht dann, wenn die interaktiven Formulare im Rahmen der Formulareingabe digital signiert werden. Hier wird in allen Fällen die Signatur durch die notwendigen „Korrekturen“ am Formular invalide werden.
Wie sieht also ein geeigneter Prozess aus? Ein Prozess welcher auf interaktive PDF Formulare setzt und einer Archivierung im PDF/A Format bedarf wird folgendermaßen aufgebaut sein:

  1. Dateneingabe über ein interaktives PDF Formular
  2. Rendern des Formulars und der eingegebenen Daten in ein „abgeschlossenes“ PDF/A konformes Dokument
  3. Optionale Signatur des Dokuments
  4. Archivierung in einem geeigneten System

Für Fragen zu Praxisbeispielen, Erfahrungen und eine Softwareauswahl stehen wir Ihnen jederzeit gerne zur Verfügung.


LiveCycle Designer Formulare und Signaturprüfung

Snippetsam 19.01.2010Kommentare deaktiviert

Adobe LiveCycle Designer bietet die Möglichkeit Signaturfelder auf einem Formular aufzubringen. Jedoch wird innerhalb des XFA JavaScript Modells keine Möglichkeit der Signaturprüfung angeboten. Warum ist das so? Nun die LiveCycle Designer Formulare laufen ja als Inhalte innerhalb eines PDF Rahmens ab. Eine Signatur muss sich aber auf das Gesamtdokument beziehen. Eine Prüfung der Signatur erfolgt über die Anwendung in der das Formular verarbeitet wird.

Hier eine Beispiel für ein Script welches in eine Adobe LiveCycle Designer Formular eingebaut werden kann. Lauffähig in Adobe Reader und Adobe Acrobat.

// Funktion zur Ermittlung des Status eines Signaturfeldes
// Mögliche Rückgabewerte sind:
// -1: Kein Signaturfeld
//  0: Signaturfeld ist leer
//  1: Unbekannter Status
//  2: Signatur ist ungültig
//  3: Signatur ist gültig aber die Identität des Unterzeichners
//    kann nicht ermittelt werden
//  4: Signatur ist gültig und die Identität des Unterzeichners
//    ist gültig
function getSignatureStatus(sigField)
    var oDoc = event.target; // Referenz auf das geöffnete Dokument
    var oField = oDoc.getField(sigField); // Referenz auf das Signaturfeld
    var sigState = oField.signatureInfo().status; // Status der Signatur
    return sigState;
}

Häufig ist es auch notwendig zu Ermitteln wer die Signatur geleistet hat. Die kann wie folgt erreicht werden

// Funktion zur Ermittlung wer eine Signatur geleistet hat
function getSignee(sigField)
    var oDoc = event.target; // Referenz auf das geöffnete Dokument
    var oField = oDoc.getField(sigField); // Referenz auf das Signaturfeld
    var signee = oField.signatureInfo().name; // Name des Unterschreibenden
    return signee;
}

PDF Formulare, Reader Extensions und Vorbefüllung mittels iText

Snippetsam 19.01.2010Kommentare deaktiviert

Seit einiger Zeit bietet Adobe die Möglichkeit ausgefüllte Formulare auch im Adobe Reader zu speichern. Hierzu müssen mittels Adobe Acrobat oder Adobe LiveCycle Reader Extensions sogenannte Reader Rechte vergeben werden, welche die Funktion im Adobe Reader aktivieren. Wird nun ein solches PDF Formular mit Daten vorbelegt, so ist darauf zu achten, das der freigegebene Zustand des Formulars nicht verändert wird, da sonst die Reader Rechte deaktiviert werden. Somit muss mit PDF Revisionen gearbeitet werden, das ursprüngliche Formular bleibt somit unverändert.

Hierzu ist bei iText der entsprechende Aufruf von PdfStamper notwendig.

Falsch:

PdfStamper stamper = new PdfStamper(PdfReader, ausgabePdf);

Richtig:

PdfStamper stamper = new PdfStamper(PdfReader, ausgabePdf, '\0', true);


Apache gibt Toolkit für XMP frei

Newsam 11.12.2009Kommentare deaktiviert

Apache JempBox ist eine Open Source Java Bibliothek für die Arbeit mit XMP Metadaten. JempBox wird als Teil des PDFBox Projektes entwickelt mit dem Ziel die Behandlung von XMP Metadaten in PDF Dokumenten zu ermöglichen.

Weitere Informationen unter http://pdfbox.apache.org/.