Wir verwenden iText, um Formularfelder für eine Reihe von Dokumenten automatisch auszufüllen und diese Dokumente dann zu einer PDF zu verketten.
Adobe hat die Option Funktionen in Acrobat Reader erweitern 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 mithilfe 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, eine PDF-Datei in eine bereits vorhandene PDF-Datei mit iText (eine beliebige Version) zu kopieren?
Es ist möglich, aber Sie müssten genug wissen, um PdfCopyFields so zu ändern, dass es im Append-Modus gespeichert wird.
Sie könnten die Funktionalität duplizieren und sie über PdfStamper (in Ihrer eigenen Klasse oder auf andere Weise), die Unterklasse PdfCopyFields oder direkt über PdfCopyFields verwenden.
Großer Stolperstein Alle Felder mit demselben Namen in einer PDF-Datei teilen denselben Wert. Wenn Sie zwei Kopien desselben Formulars in der resultierenden PDF-Datei haben, haben Sie zwei Ansichten derselben Daten.
Selbst bei unterschiedlichen Formen, wenn Sie zufällig 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 glänzen gleicher Wert.
Wenn Sie ein umfassendes System haben, bei dem all Ihre Namen kollidieren, 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 die Abflachbarkeit von PdfStamper so beliebt.
Die Alternative lautet "Umbenennen Sie alle Ihre Felder, bevor Sie die Formulare zusammenkleben", um solche Kollisionen zu vermeiden.
Selbst mit einem umfassenden System schlage ich immer noch vor, ein kleines Werkzeug aufzuschlagen, das die Formulare durchläuft, die Sie zusammenfügen und nach Kollisionen suchen. Vielleicht listet man sie zusammen mit ihren Werten in einigen Testdaten auf. Sie können etwas in der Art von "Fly: House, Common" vs "Fly: Southwest Airlines" fangen.
Wahrscheinlich nicht dieses spezielle Beispiel, aber wer weiß? ;)