2011-01-05 9 views
8

Wir verwenden iText, um Formularfelder für eine Reihe von Dokumenten automatisch auszufüllen und diese Dokumente dann zu einer PDF zu verketten.Verketten von PDFs und Beibehalten der erweiterten Funktionen in Acrobat Reader

Adobe hat die Option Erweiterte Funktionen in Acrobat Reader eingeführt, damit Benutzer von Acrobat Reader die PDF-Datei mit Änderungen in den Formularfeldern speichern können.

Dies ist eine proprietäre Adobe-Funktion, mit der iText nur umgehen kann.

Ich konnte die Arbeit für ein bestimmtes Dokument mit der PdfStamper-Klasse im Append-Modus ausführen. Da die PDFs Formularfelder enthalten, verwenden wir die PdfCopyFields-Klasse, um die Verkettung durchzuführen. PdfCopyFields hat keinen Append-Modus.

Gibt es eine andere Möglichkeit, einen Anhang einer PDF in eine bereits vorhandene PDF mit iText (eine beliebige Version) zu tun?

Antwort

5

Es ist möglich, aber Sie müssten genug wissen, um PdfCopyFields so zu ändern, dass es im Append-Modus speichert.

Sie könnten die Funktionalität duplizieren und sie oben auf PdfStamper (in Ihrer eigenen Klasse oder auf andere Weise), auf die Unterklasse PdfCopyFields oder direkt auf PdfCopyFields anwenden.

Großer Stolperstein Alle Felder mit dem gleichen Namen in einem PDF teilen sich den gleichen Wert. Wenn Sie in der resultierenden PDF-Datei zwei Kopien desselben Formulars haben, haben Sie zwei Ansichten derselben Daten.

Auch wenn Sie eine Namenskollision haben ("Stadt" hier könnte Teil einer aktuellen Adresse sein, während dort drüben die Stadt sein könnte, in der sie geboren wurden), werden sie zusammen glimme der gleiche Wert.

Wenn Sie ein Comprehensive System haben, so dass all Ihre Namenskollisionen bewusst sein werden, ist das großartig, gehen Sie pleite. Wenn sich "Vorname" immer auf dieselbe Person bezieht und SOLLTE den Wert über alle fraglichen Formulare ändern, sind Sie golden. Wenn nicht ... deshalb ist PdfStamper so flach.

Die Alternative wird "alle Felder umbenennen, bevor Sie die Formulare zusammenkleben", um solche Kollisionen zu vermeiden.

Selbst mit einem umfassenden System, schlage ich immer noch vor, ein kleines Werkzeug zu peitschen, das die Formulare durchläuft, die Sie zusammenführen und nach Kollisionen suchen. Vielleicht listet man sie zusammen mit ihren Werten in einigen Testdaten auf. Sie könnten etwas in der Art von "Fly: House, Common" vs "Fly: Southwest Airlines" fangen.

Wahrscheinlich nicht dieses besondere Beispiel, aber wer weiß? ;)

+0

Danke Mark. Für das Feldnamen-Kollisionsproblem füge ich einfach ein Postfix zu jedem Feld hinzu, basierend auf der Zählung des angehängten Dokuments. Es funktioniert für uns. –