Поля формы Pdf позволяют пользователям напрямую взаимодействовать с документом без печати или сканирования. Наиболее часто используемые типы включают текстовое поле, поле со списком, флажок, поле списка и т.д. В этой статье я расскажу, как добавить заполняемые поля формы в PDF-документ с помощью Spire.PDF для Java .
Шпиль.PDF – это библиотека классов Java, написанная для поддержки создания и обработки PDF-документов. Он предлагает ряд полезных классов в пространстве имен com.spire.pdf.fields, позволяя программистам создавать различные типы форм и обрабатывать поля форм, встроенные в существующий PDF-документ. Вот некоторые из них, затронутые в этой статье.
| PdfTextBoxField | Представляет поле текстового поля в форме PDF. |
| PdfCheckBoxField | Представляет поле флажка в форме PDF. |
| PdfComboBoxField | Представляет поле со списком в форме PDF. |
| PdfListBoxField | Представляет поле списка формы PDF. |
| PdfListFieldItem | Представляет элемент списка полей. |
| Поле списка радиокнопок Pdf | Представляет поле переключателя в форме PDF. |
| Элемент списка радиокнопок Pdf | Представляет элемент списка переключателей. |
| PdfButtonField | Представляет поле кнопки в форме PDF. |
Установить Spire.Pdf.jar
Если вы создаете проект, не относящийся к Maven, загрузите jar-файл с эту ссылку и добавьте ее в качестве зависимости в свое приложение. Для проектов Maven вы можете легко добавить jar в свое приложение, используя следующие конфигурации.
com.e-iceblue e-iceblue http://repo.e-iceblue.com/nexus/content/groups/public/ e-iceblue spire.pdf 3.8.2
Используя код
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);
}
}
Выход
Оригинал: “https://dev.to/eiceblue/add-form-fields-to-pdf-in-java-13d4”