itext
양식 : iText 5 대 iText 7
수색…
비고
iText 5는 유기적으로 성장한 도서관입니다. 많은 개발자가 코드를 제공했습니다. 예를 들어, 한 개발자가 TextField
및 PdfFormField
와 같은 클래스를 사용하여 처음부터 양식 필드를 만드는 코드를 제공 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();
}
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();
}
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();
}
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();
}