Szukaj…


Uwagi

iText 5 to biblioteka, która rozrosła się organicznie. Wielu programistów napisało kod. Na przykład: jeden programista PdfFormField kod do utworzenia pól formularza od podstaw, używając klas takich jak TextField i PdfFormField ; inny programista przyczynił się do zmiany istniejących pól formularza za pomocą klasy AcroField i szeregu metod setFieldProperty() .

W iText 5 klasy używane do tworzenia pól formularzy nie mogą być używane do zmiany pól formularzy i odwrotnie. Nie ma żadnego związku między tymi dwoma zestawami klas. Jest to mylące dla wielu użytkowników. Na przykład: niektórzy użytkownicy odkrywają klasę TextField i zakładają, że mogą użyć tej klasy do zmiany właściwości istniejącego pola tekstowego. Tak nie jest, muszą zamiast tego AcroFields klasy AcroFields .

Wszystko to zostało naprawione w iText 7. Stworzyliśmy nowy zestaw klas, takich jak PdfFormField i jego podklasa PdfTextField które można wykorzystać do utworzenia nowego pola, a także do aktualizacji istniejącego pola formularza.

Metody pola formularza iText 7 można łączyć, aby uczynić kod bardziej zwartym, i są one znacznie bardziej intuicyjne niż odpowiednie metody w iText 5. Uczynienie funkcji formularza bardziej eleganckim było jednym z kluczowych powodów przepisania iText od zera.

FormCreation.java (iText 5)

W tym przykładzie iText 5 utworzymy pole tekstowe i dodamy je do pliku PDF:

wprowadź opis zdjęcia tutaj

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

Źródło: developers.itextpdf.com

FormCreation.java (iText 7)

W tym przykładzie iText 7 utworzymy pole tekstowe i dodamy je do pliku PDF:

wprowadź opis zdjęcia tutaj

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

Źródło: developers.itextpdf.com

FormFilling.java (iText 5)

W tym przykładzie iText 5 zmienimy właściwości i wartość pola tekstowego:

wprowadź opis zdjęcia tutaj

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

Źródło: developers.itextpdf.com

FormFilling.java (iText 7)

W tym przykładzie iText 7 zmienimy właściwości i wartość pola tekstowego:

wprowadź opis zdjęcia tutaj

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

Źródło: developers.itextpdf.com



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow