itext
Formulaires: iText 5 vs iText 7
Recherche…
Remarques
iText 5 est une bibliothèque qui a connu une croissance organique. De nombreux développeurs ont contribué au code. Par exemple: un développeur a fourni du code pour créer des champs de formulaire à partir de zéro, en utilisant des classes telles que TextField et PdfFormField ; un autre développeur a fourni du code pour modifier les champs de formulaire existants, en utilisant la classe AcroField et une série de méthodes setFieldProperty() .
Dans iText 5, les classes utilisées pour créer des champs de formulaire ne peuvent pas être utilisées pour modifier les champs de formulaire, et inversement. Il n'y a aucune relation entre les deux ensembles de classes. C'est déroutant pour de nombreux utilisateurs. Par exemple: certains utilisateurs découvrent la classe TextField et supposent qu'ils peuvent utiliser cette classe pour modifier les propriétés d'un champ de texte existant. Ce n'est pas le cas, ils doivent plutôt utiliser la classe AcroFields .
Tout cela est corrigé dans iText 7. Nous avons créé un nouvel ensemble de classes telles que PdfFormField et sa sous-classe PdfTextField qui peuvent être utilisées pour créer un nouveau champ, ainsi que pour mettre à jour un champ de formulaire existant.
Les méthodes du champ de formulaire iText 7 peuvent être enchaînées pour rendre votre code plus compact, et elles sont beaucoup plus intuitives que les méthodes correspondantes dans iText 5. Rendre les fonctionnalités du formulaire plus élégantes était l’une des principales raisons de réécrire iText à partir de zéro.
FormCreation.java (iText 5)
Dans cet exemple iText 5, nous allons créer un champ de texte et l'ajouter à un PDF:
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();
}
Source: developers.itextpdf.com
FormCreation.java (iText 7)
Dans cet exemple iText 7, nous allons créer un champ de texte et nous l'ajouterons à un PDF:
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();
}
Source: developers.itextpdf.com
FormFilling.java (iText 5)
Dans cet exemple iText 5, nous allons modifier les propriétés et la valeur d'un champ de texte:
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();
}
Source: developers.itextpdf.com
FormFilling.java (iText 7)
Dans cet exemple iText 7, nous allons modifier les propriétés et la valeur d'un champ de texte:
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();
}
Source: developers.itextpdf.com



