Поиск…


замечания

iText 5 - это библиотека, которая органично выросла. Многие разработчики внесли код. Например: один разработчик внес свой код для создания полей формы с нуля, используя такие классы, как TextField и PdfFormField ; другой разработчик внес свой код для изменения существующих полей формы, используя класс AcroField и ряд методов setFieldProperty() .

В iText 5 классы, используемые для создания полей формы, не могут использоваться для изменения полей формы и наоборот. Между двумя наборами классов нет никакой связи. Это сложно для многих пользователей. Например: некоторые пользователи обнаруживают класс TextField и предполагают, что могут использовать этот класс для изменения свойств существующего текстового поля. Это не так, им нужно использовать класс AcroFields .

Все это исправлено в iText 7. Мы создали новый набор классов, таких как PdfFormField и его подкласс PdfTextField которые можно использовать для создания нового поля, а также для обновления существующего поля формы.

Методы поля формы iText 7 могут быть закодированы, чтобы сделать ваш код более компактным, и они гораздо более интуитивно понятны, чем соответствующие методы в iText 5. Создание более функциональной формы формы было одной из основных причин перезаписи iText с нуля.

FormCreation.java (iText 5)

В этом примере iText 5 мы создадим текстовое поле, и мы добавим его в 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();
}

Источник: developers.itxtpdf.com

FormCreation.java (iText 7)

В этом примере iText 7 мы создадим текстовое поле, и мы добавим его в 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();
}

Источник: developers.itxtpdf.com

FormFilling.java (iText 5)

В этом примере iText 5 мы изменим свойства и значение текстового поля:

введите описание изображения здесь

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

Источник: developers.itxtpdf.com

FormFilling.java (iText 7)

В этом примере iText 7 мы изменим свойства и значение текстового поля:

введите описание изображения здесь

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

Источник: developers.itxtpdf.com



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow