Buscar..


Observaciones

iText 5 es una biblioteca que ha crecido orgánicamente. Muchos desarrolladores contribuyeron con código. Por ejemplo: un desarrollador contribuyó con un código para crear campos de formulario desde cero, usando clases como TextField y PdfFormField ; otro desarrollador contribuyó con código para cambiar los campos de formulario existentes, utilizando la clase AcroField y una serie de métodos setFieldProperty() .

En iText 5, las clases utilizadas para crear campos de formulario no pueden usarse para cambiar campos de formulario, y viceversa. No hay relación alguna entre los dos conjuntos de clases. Eso es confuso para muchos usuarios. Por ejemplo: algunos usuarios descubren la clase TextField y asumen que pueden usar esa clase para cambiar las propiedades de un campo de texto existente. Este no es el caso, necesitan usar la clase AcroFields lugar.

Todo esto se soluciona en iText 7. Creamos un nuevo conjunto de clases, como PdfFormField y su subclase PdfTextField que se pueden usar para crear un nuevo campo, así como para actualizar un campo de formulario existente.

Los métodos de campo de formulario de iText 7 se pueden encadenar para hacer que su código sea más compacto, y son mucho más intuitivos que los métodos correspondientes en iText 5. Hacer que la funcionalidad de formulario sea más elegante fue una de las razones clave para volver a escribir iText desde cero.

FormCreation.java (iText 5)

En este ejemplo de iText 5, crearemos un campo de texto y lo agregaremos a un PDF:

introduzca la descripción de la imagen aquí

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

Fuente: developers.itextpdf.com

FormCreation.java (iText 7)

En este ejemplo de iText 7, crearemos un campo de texto y lo agregaremos a un PDF:

introduzca la descripción de la imagen aquí

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

Fuente: developers.itextpdf.com

FormFilling.java (iText 5)

En este ejemplo de iText 5, cambiaremos las propiedades y el valor de un campo de texto:

introduzca la descripción de la imagen aquí

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

Fuente: developers.itextpdf.com

FormFilling.java (iText 7)

En este ejemplo de iText 7, cambiaremos las propiedades y el valor de un campo de texto:

introduzca la descripción de la imagen aquí

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

Fuente: developers.itextpdf.com



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow