itext
Formen: iText 5 vs. iText 7
Suche…
Bemerkungen
iText 5 ist eine Bibliothek, die organisch gewachsen ist. Viele Entwickler haben Code beigesteuert. Zum Beispiel: Ein Entwickler hat Code zur Erstellung von Formularfeldern mit Klassen wie TextField und PdfFormField . Ein anderer Entwickler trug Code zum Ändern vorhandener Formularfelder bei, wobei die AcroField Klasse und eine Reihe von setFieldProperty() Methoden verwendet wurden.
In iText 5 können die zum Erstellen von Formularfeldern verwendeten Klassen nicht zum Ändern von Formularfeldern verwendet werden und umgekehrt. Es besteht keinerlei Zusammenhang zwischen den beiden Klassen. Das ist für viele Benutzer verwirrend. Zum Beispiel: Einige Benutzer erkennen die TextField Klasse und gehen davon aus, dass sie diese Klasse verwenden können, um die Eigenschaften eines vorhandenen Textfelds zu ändern. Dies ist nicht der Fall. Sie müssen stattdessen die AcroFields Klasse verwenden.
All dies ist in iText 7 behoben. Wir haben einen neuen Satz von Klassen wie PdfFormField und seine Unterklasse PdfTextField erstellt, mit dem ein neues Feld erstellt und ein vorhandenes Formularfeld aktualisiert werden kann.
Die iText 7-Formularfeldmethoden können verkettet werden, um den Code kompakter zu gestalten, und sie sind viel intuitiver als die entsprechenden Methoden in iText 5. Die Eleganz der Formularfunktionalität war einer der Hauptgründe für das erneute Schreiben von iText.
FormCreation.java (iText 5)
In diesem iText 5-Beispiel erstellen wir ein Textfeld und fügen es einer PDF-Datei hinzu:
public void manipulatePdf(String src, String dest) throws DocumentException, IOException {
PdfReader reader = new PdfReader(src);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
TextField tf = new TextField(stamper.getWriter(),
new Rectangle(110, 780, 180, 806), "text");
tf.setBorderColor(BaseColor.BLUE);
tf.setBorderWidth(2);
tf.setTextColor(BaseColor.RED);
tf.setFontSize(12);
tf.setText("Text field");
PdfFormField field = tf.getTextField();
stamper.addAnnotation(field, 1);
stamper.close();
reader.close();
}
Quelle: developer.itextpdf.com
FormCreation.java (iText 7)
In diesem iText 7-Beispiel erstellen wir ein Textfeld und fügen es einer PDF-Datei hinzu:
public void manipulatePdf(String src, String dest) throws IOException {
PdfReader reader = new PdfReader(src);
PdfDocument pdf = new PdfDocument(reader, new PdfWriter(dest));
PdfAcroForm form = PdfAcroForm.getAcroForm(pdf, true);
PdfFormField tf = PdfTextFormField.createText(
pdf, new Rectangle(110, 780, 70, 26), "text", "Text Field")
.setBorderColor(Color.BLUE)
.setBorderWidth(2)
.setColor(Color.RED)
.setFontSize(12);
form.addField(tf);
pdf.close();
}
Quelle: developer.itextpdf.com
FormFilling.java (iText 5)
In diesem iText 5-Beispiel ändern wir die Eigenschaften und den Wert eines Textfelds:
public void manipulatePdf(String src, String dest) throws DocumentException, IOException {
PdfReader reader = new PdfReader(src);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
AcroFields fields = stamper.getAcroFields();
fields.setFieldProperty("text", "textcolor", BaseColor.BLUE, null);
fields.setFieldProperty("text", "bordercolor", BaseColor.RED, null);
fields.setFieldProperty("text", "fontsize", 14, null);
fields.setField("text", "Field Text");
stamper.close();
reader.close();
}
Quelle: developer.itextpdf.com
FormFilling.java (iText 7)
In diesem iText 7-Beispiel ändern wir die Eigenschaften und den Wert eines Textfelds:
public void manipulatePdf(String src, String dest) throws IOException {
PdfReader reader = new PdfReader(src);
PdfDocument pdf = new PdfDocument(reader, new PdfWriter(dest));
PdfAcroForm form = PdfAcroForm.getAcroForm(pdf, true);
PdfFormField tf = form.getFormFields().get("text");
tf.setBorderColor(Color.RED)
.setColor(Color.BLUE)
.setFontSize(14)
.setValue("Field Text");
pdf.close();
}
Quelle: developer.itextpdf.com



