수색…


비고

iText 5는 유기적으로 성장한 도서관입니다. 많은 개발자가 코드를 제공했습니다. 예를 들어, 한 개발자가 TextFieldPdfFormField 와 같은 클래스를 사용하여 처음부터 양식 필드를 만드는 코드를 제공 PdfFormField . 다른 개발자는 AcroField 클래스와 일련의 setFieldProperty() 메서드를 사용하여 기존 양식 필드를 변경하는 코드를 제공했습니다.

iText 5에서는 양식 필드를 만드는 데 사용 된 클래스를 사용하여 양식 필드를 변경하거나 그 반대로 사용할 수 없습니다. 두 세트의 클래스 간에는 아무런 관계가 없습니다. 그것은 많은 사용자에게 혼란 스럽습니다. 예를 들어 일부 사용자는 TextField 클래스를 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.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