Рубрики
Без рубрики

Добавление полей формы в PDF на Java

В этой статье рассказывается о том, как добавить заполняемые поля формы в PDF-документ на java. Помеченные полями java, pdf, form.

Поля формы 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”