サーチ…


備考

iText 5は有機的に成長した図書館です。多くの開発者がコードを提供しています。たとえば、ある開発者が、 TextFieldPdfFormFieldなどのクラスを使用して、最初からフォームフィールドを作成するためのコードをPdfFormField 。別の開発者が、 AcroFieldクラスと一連のsetFieldProperty()メソッドを使用して、既存のフォームフィールドを変更するコードを提供しました。

iText 5では、フォームフィールドの作成に使用されるクラスを使用してフォームフィールドを変更することはできず、その逆もあります。 2組のクラスの間には何の関係もありません。それは多くのユーザーにとって混乱します。たとえば、一部のユーザーはTextFieldクラスを検出し、そのクラスを使用して既存のテキストフィールドのプロパティを変更できると想定します。そうでない場合は、 AcroFieldsクラスを使用する必要があります。

このすべてはiText 7で修正されています。既存のフォームフィールドの更新だけでなく、新しいフィールドの作成にも使用できるPdfFormFieldやそのサブクラスPdfTextFieldなど、新しいクラスのクラスを作成しました。

iText 7フォームフィールドメソッドは、コードをよりコンパクトにするために連鎖させることができ、iText 5の対応するメソッドよりもはるかに直感的です。フォーム機能をよりエレガントにすることは、iTextを一から書き直す重要な理由の1つでした。

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.itextpdf.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.itextpdf.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.itextpdf.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.itextpdf.com



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow