Ricerca…


Osservazioni

iText 5 è una libreria che è cresciuta organicamente. Molti sviluppatori hanno contribuito con il codice. Ad esempio: uno sviluppatore ha contribuito al codice per creare campi modulo da zero, utilizzando classi come TextField e PdfFormField ; un altro sviluppatore ha contribuito al codice per modificare i campi modulo esistenti, utilizzando la classe AcroField e una serie di metodi setFieldProperty() .

In iText 5, le classi utilizzate per creare campi modulo non possono essere utilizzate per modificare i campi modulo e viceversa. Non c'è alcuna relazione tra i due gruppi di classi. Questo è fonte di confusione per molti utenti. Ad esempio: alcuni utenti scoprono la classe TextField e assumono che possano usare quella classe per modificare le proprietà di un campo di testo esistente. Questo non è il caso, hanno invece bisogno di usare la classe AcroFields .

Tutto ciò è stato risolto in iText 7. Abbiamo creato un nuovo set di classi come PdfFormField e la sottoclasse PdfTextField che può essere utilizzato per creare un nuovo campo, nonché per aggiornare un campo modulo esistente.

I metodi del campo modulo di iText 7 possono essere concatenati per rendere il tuo codice più compatto e sono molto più intuitivi rispetto ai metodi corrispondenti in iText 5. Rendere la funzionalità del modulo più elegante è stato uno dei motivi principali per riscrivere iText da zero.

FormCreation.java (iText 5)

In questo esempio di iText 5, creeremo un campo di testo e lo aggiungeremo a un PDF:

inserisci la descrizione dell'immagine qui

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();
}

Fonte: developers.itextpdf.com

FormCreation.java (iText 7)

In questo esempio di iText 7, creeremo un campo di testo e lo aggiungeremo a un PDF:

inserisci la descrizione dell'immagine qui

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();
}

Fonte: developers.itextpdf.com

FormFilling.java (iText 5)

In questo esempio di iText 5, cambieremo le proprietà e il valore di un campo di testo:

inserisci la descrizione dell'immagine qui

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();
}

Fonte: developers.itextpdf.com

FormFilling.java (iText 7)

In questo esempio di iText 7, cambieremo le proprietà e il valore di un campo di testo:

inserisci la descrizione dell'immagine qui

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();
}

Fonte: developers.itextpdf.com



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow