Heim Java javaLernprogramm So erstellen und füllen Sie PDF-Formularfelder in Java (Codebeispiel)

So erstellen und füllen Sie PDF-Formularfelder in Java (Codebeispiel)

Jan 24, 2019 am 11:34 AM
java

Der Inhalt dieses Artikels befasst sich mit dem Erstellen und Ausfüllen von PDF-Formularfeldern (Codebeispiele) und ist für Freunde in Not hilfreich.

Formularfelder können je nach Verwendungszweck in viele verschiedene Typen unterteilt werden. Zu den häufigsten gehören Textfelder, mehrzeilige Textfelder, Passwortfelder, ausgeblendete Felder, Kontrollkästchen, Optionsfelder und Dropdown-Auswahlfelder. usw. Der Zweck besteht darin, Benutzereingaben oder ausgewählte Daten zu sammeln. Im folgenden Beispiel zeigen wir Ihnen, wie Sie mithilfe der Java-Programmierung Formularfelder in PDF hinzufügen und ausfüllen. Das Ausfüllen der Formularfelder kann hier in zwei Situationen unterteilt werden: Die eine ist das Ausfüllen beim Erstellen des Formularfelds und die andere das Ausfüllen des Dokuments, in dem das Formularfeld bereits erstellt wurde. Darüber hinaus können Sie für Dokumente, die Formularfelder erstellt und ausgefüllt haben, auch den Schreibschutz festlegen, um Änderungen und Bearbeitungen zu verhindern.

Zusammenfassung der wichtigsten Punkte:

1. Formularfelder erstellen

3 schreibgeschützt sein

Tools:

Free Spire.PDF für Java v2.0.0 (kostenlose Version)

Jar

Dateiimport

Schritte

1: Erstellen Sie einen neuen Ordner im Java-Programm und nennen Sie ihn Lib. Und kopieren Sie die beiden JAR-Dateien im Produktpaket in den neu erstellten Ordner.

Schritt 2

: Nachdem Sie die Dateien kopiert haben, fügen Sie sie der Referenzklassenbibliothek hinzu: Wählen Sie diese beiden JAR-Dateien aus und rechts -Klicken Sie, wählen Sie „Build-Pfad“ – „Zum Build-Pfad hinzufügen“. Vervollständigen Sie das Zitat.

Java

Codebeispiel (als Referenz)

1.

PDFFormularfelder erstellen und ausfüllen

import java.awt.*;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import com.spire.pdf.FileFormat;
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.fields.*;
import com.spire.pdf.graphics.*;

public class AddFormFieldsToPdf {

    public static void main(String[] args) throws Exception {
        
        //创建PdfDocument对象,并添加页面
        PdfDocument doc = new PdfDocument();        
        PdfPageBase page = doc.getPages().add();

        //初始化位置变量
        float baseX = 100;
        float baseY = 0;

        //创建画刷对象
        PdfSolidBrush brush1 = new PdfSolidBrush(new PdfRGBColor(Color.BLUE));
        PdfSolidBrush brush2 = new PdfSolidBrush(new PdfRGBColor(Color.black));
        
        //创建TrueType字体
        PdfTrueTypeFont font= new PdfTrueTypeFont(new Font("Arial Unicode MS",Font.PLAIN,10),true); 

        //添加文本框
        String text = "姓名:";//添加文本
        page.getCanvas().drawString(text, font, brush1, new Point2D.Float(0, baseY));//在PDF中绘制文字
        Rectangle2D.Float tbxBounds = new Rectangle2D.Float(baseX, baseY , 150, 15);//创建Rectangle2D对象
        PdfTextBoxField textBox = new PdfTextBoxField(page, "TextBox");//创建文本框对象
        textBox.setBounds(tbxBounds);//设置文本框的Bounds
        textBox.setText("刘兴");//填充文本框
        textBox.setFont(font);//应用文本框的字体
        doc.getForm().getFields().add(textBox);//添加文本框到PDF域的集合
        baseY +=25;

        //添加复选框
        page.getCanvas().drawString("所在院系:", 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, "CheckBox1");//创建第一个复选框对象
        checkBoxField.setBounds(rec1);
        checkBoxField.setChecked(false);//填充复选框
        page.getCanvas().drawString("经管系", 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, "CheckBox2");//创建第二个复选框对象
        checkBoxField1.setBounds(rec2);
        checkBoxField1.setChecked(true);//填充复选框
        page.getCanvas().drawString("创新班", font,  brush2, new Point2D.Float(baseX+90, baseY));      
        doc.getForm().getFields().add(checkBoxField);//添加复选框到PDF
        baseY += 25;

        //添加列表框
        page.getCanvas().drawString("录取批次:", 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, "ListBox");//创建列表框对象
        listBoxField.getItems().add(new PdfListFieldItem("第一批次", "item1"));
        listBoxField.getItems().add(new PdfListFieldItem("第二批次", "item2"));
        listBoxField.getItems().add(new PdfListFieldItem("第三批次", "item3"));;
        listBoxField.setBounds(rec);
        listBoxField.setFont(font);
        listBoxField.setSelectedIndex(0);//填充列表框
        doc.getForm().getFields().add(listBoxField);//添加列表框到PDF
        baseY += 60;

        //添加单选按钮
        page.getCanvas().drawString("招收方式:", font, brush1, new Point2D.Float(0, baseY));
        PdfRadioButtonListField radioButtonListField = new PdfRadioButtonListField(page, "Radio");//创建单选按钮对象
        PdfRadioButtonListItem radioItem1 = new PdfRadioButtonListItem("Item1");//创建第一个单选按钮
        radioItem1.setBounds(new Rectangle2D.Float(baseX, baseY, 15, 15));
        page.getCanvas().drawString("全日制", font, brush2, new Point2D.Float(baseX + 20, baseY));
        PdfRadioButtonListItem radioItem2 = new PdfRadioButtonListItem("Item2");//创建第二个单选按钮
        radioItem2.setBounds(new Rectangle2D.Float(baseX + 70, baseY, 15, 15));
        page.getCanvas().drawString("成人教育", font, brush2, new Point2D.Float(baseX + 90, baseY));
        radioButtonListField.getItems().add(radioItem1);
        radioButtonListField.getItems().add(radioItem2);
        radioButtonListField.setSelectedIndex(0);//选择填充第一个单选按钮
        doc.getForm().getFields().add(radioButtonListField);//添加单选按钮到PDF
        baseY += 25;

        //添加组合框
        page.getCanvas().drawString("最高学历:", font, brush1, new Point2D.Float(0, baseY));
        Rectangle2D.Float cmbBounds = new Rectangle2D.Float(baseX, baseY, 150, 15);//创建cmbBounds对象
        PdfComboBoxField comboBoxField = new PdfComboBoxField(page, "ComboBox");//创建comboBoxField对象
        comboBoxField.setBounds(cmbBounds);
        comboBoxField.getItems().add(new PdfListFieldItem("博士", "item1"));
        comboBoxField.getItems().add(new PdfListFieldItem("硕士", "itme2"));
        comboBoxField.getItems().add(new PdfListFieldItem("本科", "item3"));
        comboBoxField.getItems().add(new PdfListFieldItem("大专", "item4"));
        comboBoxField.setSelectedIndex(0);      
        comboBoxField.setFont(font);
        doc.getForm().getFields().add(comboBoxField);//添加组合框到PDF
        baseY += 25;

        //添加签名域
        page.getCanvas().drawString("本人签字确认\n以上信息属实:", font, brush1, new Point2D.Float(0, baseY));
        PdfSignatureField sgnField= new PdfSignatureField(page,"sgnField");//创建sgnField对象
        Rectangle2D.Float sgnBounds = new Rectangle2D.Float(baseX, baseY, 150, 80);//创建sgnBounds对象
        sgnField.setBounds(sgnBounds);          
        doc.getForm().getFields().add(sgnField);//添加sgnField到PDF
        baseY += 90;

        //添加按钮
        page.getCanvas().drawString("", font, brush1, new Point2D.Float(0, baseY));
        Rectangle2D.Float btnBounds = new Rectangle2D.Float(baseX, baseY, 50, 15);//创建btnBounds对象
        PdfButtonField buttonField = new PdfButtonField(page, "Button");//创建buttonField对象
        buttonField.setBounds(btnBounds);
        buttonField.setText("提交");//设置按钮显示文本
        buttonField.setFont(font);
        doc.getForm().getFields().add(buttonField);//添加按钮到PDF  
        
        //保存文档
        doc.saveToFile("result.pdf", FileFormat.PDF);              
    }
}
Nach dem Login kopieren

Effekt erstellen (ausfüllen):

2.

Das vorhandene Formularfelddokument laden und ausfüllenDas Testdokument sieht wie folgt aus:

import com.spire.pdf.FileFormat;
import com.spire.pdf.PdfDocument;
import com.spire.pdf.fields.PdfField;
import com.spire.pdf.widget.*;

public class FillFormField_PDF{
    public static void main(String[] args){
        
        //创建PdfDocument对象,并加载PDF文档
        PdfDocument doc = new PdfDocument();
        doc.loadFromFile("output.pdf");

        //获取文档中的域
        PdfFormWidget form = (PdfFormWidget) doc.getForm();        
        //获取域控件集合
        PdfFormFieldWidgetCollection formWidgetCollection = form.getFieldsWidget();

        //遍历域控件并填充数据
        for (int i = 0; i < formWidgetCollection.getCount(); i++) {
            
            PdfField field = formWidgetCollection.get(i);         
            if (field instanceof PdfTextBoxFieldWidget) {
                PdfTextBoxFieldWidget textBoxField = (PdfTextBoxFieldWidget) field;
                textBoxField.setText("吴 敏");
            }  
            if (field instanceof PdfCheckBoxWidgetFieldWidget) {
                PdfCheckBoxWidgetFieldWidget checkBoxField = (PdfCheckBoxWidgetFieldWidget) field;
                switch(checkBoxField.getName()){
                case "CheckBox1":
                    checkBoxField.setChecked(true);
                    break;
                case "CheckBox2":
                    checkBoxField.setChecked(true);
                    break;
                }
            }
            if (field instanceof PdfRadioButtonListFieldWidget) {
                PdfRadioButtonListFieldWidget radioButtonListField = (PdfRadioButtonListFieldWidget) field;
                radioButtonListField.setSelectedIndex(1);
            }
            if (field instanceof PdfListBoxWidgetFieldWidget) {
                PdfListBoxWidgetFieldWidget listBox = (PdfListBoxWidgetFieldWidget) field;
                listBox.setSelectedIndex(1);
            }
            
            if (field instanceof PdfComboBoxWidgetFieldWidget) {
                PdfComboBoxWidgetFieldWidget comboBoxField = (PdfComboBoxWidgetFieldWidget) field;
                comboBoxField.setSelectedIndex(1);
            }
        }
        
        //保存文档
        doc.saveToFile("FillFormFields.pdf", FileFormat.PDF);
    }
}
Nach dem Login kopieren

Fülleffekt:

3.

Formular einschränken Feldbearbeitung (schreibgeschützt)

import com.spire.pdf.PdfDocument;

public class FieldReadonly_PDF {
    public static void main(String[] args) throws Exception {
    {
    //创建PdfDocument对象,并加载包含表单域的PDF文档
    PdfDocument pdf = new PdfDocument();
    pdf.loadFromFile("test.pdf");
    
        //将文档中的所有表单域设置为只读
        pdf.getForm().setReadOnly(true);
    
        //保存文档
       pdf.saveToFile("result.pdf");   
     }
  }
Nach dem Login kopieren

Im generierten Dokument können die Formularfelder nicht bearbeitet werden und sind schreibgeschützt

Das obige ist der detaillierte Inhalt vonSo erstellen und füllen Sie PDF-Formularfelder in Java (Codebeispiel). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Perfekte Zahl in Java Perfekte Zahl in Java Aug 30, 2024 pm 04:28 PM

Leitfaden zur perfekten Zahl in Java. Hier besprechen wir die Definition, Wie prüft man die perfekte Zahl in Java?, Beispiele mit Code-Implementierung.

Weka in Java Weka in Java Aug 30, 2024 pm 04:28 PM

Leitfaden für Weka in Java. Hier besprechen wir die Einführung, die Verwendung von Weka Java, die Art der Plattform und die Vorteile anhand von Beispielen.

Smith-Nummer in Java Smith-Nummer in Java Aug 30, 2024 pm 04:28 PM

Leitfaden zur Smith-Zahl in Java. Hier besprechen wir die Definition: Wie überprüft man die Smith-Nummer in Java? Beispiel mit Code-Implementierung.

Fragen zum Java Spring-Interview Fragen zum Java Spring-Interview Aug 30, 2024 pm 04:29 PM

In diesem Artikel haben wir die am häufigsten gestellten Fragen zu Java Spring-Interviews mit ihren detaillierten Antworten zusammengestellt. Damit Sie das Interview knacken können.

Brechen oder aus Java 8 Stream foreach zurückkehren? Brechen oder aus Java 8 Stream foreach zurückkehren? Feb 07, 2025 pm 12:09 PM

Java 8 führt die Stream -API ein und bietet eine leistungsstarke und ausdrucksstarke Möglichkeit, Datensammlungen zu verarbeiten. Eine häufige Frage bei der Verwendung von Stream lautet jedoch: Wie kann man von einem Foreach -Betrieb brechen oder zurückkehren? Herkömmliche Schleifen ermöglichen eine frühzeitige Unterbrechung oder Rückkehr, aber die Stream's foreach -Methode unterstützt diese Methode nicht direkt. In diesem Artikel werden die Gründe erläutert und alternative Methoden zur Implementierung vorzeitiger Beendigung in Strahlverarbeitungssystemen erforscht. Weitere Lektüre: Java Stream API -Verbesserungen Stream foreach verstehen Die Foreach -Methode ist ein Terminalbetrieb, der einen Vorgang für jedes Element im Stream ausführt. Seine Designabsicht ist

Zeitstempel für Datum in Java Zeitstempel für Datum in Java Aug 30, 2024 pm 04:28 PM

Anleitung zum TimeStamp to Date in Java. Hier diskutieren wir auch die Einführung und wie man Zeitstempel in Java in ein Datum konvertiert, zusammen mit Beispielen.

Java -Programm, um das Kapselvolumen zu finden Java -Programm, um das Kapselvolumen zu finden Feb 07, 2025 am 11:37 AM

Kapseln sind dreidimensionale geometrische Figuren, die aus einem Zylinder und einer Hemisphäre an beiden Enden bestehen. Das Volumen der Kapsel kann berechnet werden, indem das Volumen des Zylinders und das Volumen der Hemisphäre an beiden Enden hinzugefügt werden. In diesem Tutorial wird erörtert, wie das Volumen einer bestimmten Kapsel in Java mit verschiedenen Methoden berechnet wird. Kapselvolumenformel Die Formel für das Kapselvolumen lautet wie folgt: Kapselvolumen = zylindrisches Volumenvolumen Zwei Hemisphäre Volumen In, R: Der Radius der Hemisphäre. H: Die Höhe des Zylinders (ohne die Hemisphäre). Beispiel 1 eingeben Radius = 5 Einheiten Höhe = 10 Einheiten Ausgabe Volumen = 1570,8 Kubikeinheiten erklären Berechnen Sie das Volumen mithilfe der Formel: Volumen = π × R2 × H (4

PHP vs. Python: Verständnis der Unterschiede PHP vs. Python: Verständnis der Unterschiede Apr 11, 2025 am 12:15 AM

PHP und Python haben jeweils ihre eigenen Vorteile, und die Wahl sollte auf Projektanforderungen beruhen. 1.PHP eignet sich für die Webentwicklung mit einfacher Syntax und hoher Ausführungseffizienz. 2. Python eignet sich für Datenwissenschaft und maschinelles Lernen mit präziser Syntax und reichhaltigen Bibliotheken.

See all articles