Java에서 PDF에 양식 필드 추가

30113 단어 pdfformfieldsjava
PDF 양식 필드를 사용하면 사용자가 인쇄하거나 스캔하지 않고도 문서와 직접 상호 작용할 수 있습니다. 가장 자주 사용되는 유형은 텍스트 상자, 콤보 상자, 확인란, 목록 상자 등입니다. 이 기사에서는 Spire.PDF for Java을 사용하여 채울 수 있는 양식 필드를 PDF 문서에 추가하는 방법을 소개합니다.

Spire.PDF는 PDF 문서의 생성 및 조작을 지원하도록 작성된 Java 클래스 라이브러리입니다. com.spire.pdf.fields 네임스페이스에 여러 가지 유용한 클래스를 제공하여 프로그래머가 다양한 유형의 양식을 만들고 기존 PDF 문서에 포함된 양식 필드를 처리할 수 있도록 합니다. 다음은 이 기사에 관련된 몇 가지입니다.


수업
설명


PdfTextBox필드
PDF 형식의 텍스트 상자 필드를 나타냅니다.

PdfCheckBox필드
PDF 형식의 확인란 필드를 나타냅니다.

PdfComboBox필드
PDF 양식의 콤보 상자 필드를 나타냅니다.

PdfListBox필드
PDF 양식의 목록 상자 필드를 나타냅니다.

PdfListFieldItem
목록 필드의 항목을 나타냅니다.

PdfRadioButtonList필드
PDF 형식의 라디오 버튼 필드를 나타냅니다.

PdfRadioButtonList항목
라디오 버튼 목록의 항목을 나타냅니다.

Pdf버튼필드
PDF 형식의 버튼 필드를 나타냅니다.


Spire.Pdf.jar 설치



비 Maven 프로젝트를 생성하는 경우 this link에서 jar 파일을 다운로드하고 애플리케이션의 종속성으로 추가합니다. Maven 프로젝트의 경우 다음 구성을 사용하여 애플리케이션에 jar를 쉽게 추가할 수 있습니다.

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>http://repo.e-iceblue.com/nexus/content/groups/public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId> e-iceblue </groupId>
        <artifactId>spire.pdf</artifactId>
        <version>3.8.2</version>
    </dependency>
</dependencies>

코드 사용



import com.spire.pdf.fields.*;
import com.spire.pdf.graphics.*;

import java.awt.*;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.util.EnumSet;

public class AddFormFieldsToPdf {

    public static void main(String[] args) throws Exception {

        //Create a PdfDocument object
        PdfDocument doc = new PdfDocument();

        //Add a page
        PdfPageBase page = doc.getPages().add();

        //Initialize x and y coordinates
        float baseX = 100;
        float baseY = 0;

        //Create brush objects
        PdfSolidBrush brush1 = new PdfSolidBrush(new PdfRGBColor(Color.BLUE));
        PdfSolidBrush brush2 = new PdfSolidBrush(new PdfRGBColor(Color.black));

        //Create font
        PdfFont font = new PdfFont(PdfFontFamily.Times_Roman, 12f, EnumSet.of(PdfFontStyle.Regular));

        //Add a text box to pdf
        String text = "Name:";
        page.getCanvas().drawString(text, font, brush1, new Point2D.Float(0, baseY));
        Rectangle2D.Float tbxBounds = new Rectangle2D.Float(baseX, baseY, 150, 15);
        PdfTextBoxField textBox = new PdfTextBoxField(page, "textbox");
        textBox.setBounds(tbxBounds);
        textBox.setFont(font);
        doc.getForm().getFields().add(textBox);
        baseY += 35;

        //Add radio buttons to pdf
        page.getCanvas().drawString("Gender:", font, brush1, new Point2D.Float(0, baseY));
        PdfRadioButtonListField radioButtonListField = new PdfRadioButtonListField(page, "radio");
        PdfRadioButtonListItem radioItem1 = new PdfRadioButtonListItem("male");
        radioItem1.setBounds(new Rectangle2D.Float(baseX, baseY, 15, 15));
        page.getCanvas().drawString("Male", font, brush2, new Point2D.Float(baseX + 20, baseY));
        PdfRadioButtonListItem radioItem2 = new PdfRadioButtonListItem("female");
        radioItem2.setBounds(new Rectangle2D.Float(baseX + 70, baseY, 15, 15));
        page.getCanvas().drawString("Female", font, brush2, new Point2D.Float(baseX + 90, baseY));
        radioButtonListField.getItems().add(radioItem1);
        radioButtonListField.getItems().add(radioItem2);
        radioButtonListField.setSelectedIndex(0);
        doc.getForm().getFields().add(radioButtonListField);
        baseY += 35;

        //Add a combo box to pdf
        page.getCanvas().drawString("Country:", font, brush1, new Point2D.Float(0, baseY));
        Rectangle2D.Float cmbBounds = new Rectangle2D.Float(baseX, baseY, 150, 15);
        PdfComboBoxField comboBoxField = new PdfComboBoxField(page, "combobox");
        comboBoxField.setBounds(cmbBounds);
        comboBoxField.getItems().add(new PdfListFieldItem("United States", "us"));
        comboBoxField.getItems().add(new PdfListFieldItem("Canada", "can"));
        comboBoxField.getItems().add(new PdfListFieldItem("China", "cn"));
        comboBoxField.getItems().add(new PdfListFieldItem("Japan", "jpn"));
        comboBoxField.setSelectedIndex(0);
        comboBoxField.setFont(font);
        doc.getForm().getFields().add(comboBoxField);
        baseY += 35;

        //Add checkboxes to pdf
        page.getCanvas().drawString("Hobbies:", font, brush1, new Point2D.Float(0, baseY));
        java.awt.geom.Rectangle2D.Float rec1 = new java.awt.geom.Rectangle2D.Float(baseX, baseY, 15, 15);
        PdfCheckBoxField checkBoxField = new PdfCheckBoxField(page, "travel");
        checkBoxField.setBounds(rec1);
        checkBoxField.setChecked(false);
        page.getCanvas().drawString("Travel", font, brush2, new Point2D.Float(baseX + 20, baseY));
        java.awt.geom.Rectangle2D.Float rec2 = new java.awt.geom.Rectangle2D.Float(baseX + 70, baseY, 15, 15);
        PdfCheckBoxField checkBoxField1 = new PdfCheckBoxField(page, "game");
        checkBoxField1.setBounds(rec2);
        checkBoxField1.setChecked(false);
        page.getCanvas().drawString("Game", font, brush2, new Point2D.Float(baseX + 90, baseY));
        doc.getForm().getFields().add(checkBoxField);
        doc.getForm().getFields().add(checkBoxField1);
        baseY += 35;

        //Add a list box to pdf
        page.getCanvas().drawString("Degree:", font, brush1, new Point2D.Float(0, baseY));
        java.awt.geom.Rectangle2D.Float rec = new java.awt.geom.Rectangle2D.Float(baseX, baseY, 150, 50);
        PdfListBoxField listBoxField = new PdfListBoxField(page, "degree");
        listBoxField.getItems().add(new PdfListFieldItem("High School", "high"));
        listBoxField.getItems().add(new PdfListFieldItem("College Degree", "college"));
        listBoxField.getItems().add(new PdfListFieldItem("Master's Degree", "master"));
        listBoxField.setBounds(rec);
        listBoxField.setFont(font);
        listBoxField.setSelectedIndex(0);
        doc.getForm().getFields().add(listBoxField);
        baseY += 75;

        //Add a button to pdf
        Rectangle2D.Float btnBounds = new Rectangle2D.Float(baseX, baseY, 50, 15);
        PdfButtonField buttonField = new PdfButtonField(page, "submit");
        buttonField.setBounds(btnBounds);
        buttonField.setText("Submit");
        buttonField.setFont(font);
        doc.getForm().getFields().add(buttonField);

        //Save to file
        doc.saveToFile("AddFormFields.pdf", FileFormat.PDF);
    }
}

산출

좋은 웹페이지 즐겨찾기