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:

entrer la description de l'image ici

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:

entrer la description de l'image ici

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:

entrer la description de l'image ici

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:

entrer la description de l'image ici

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



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow