Java PDFフォームドメインの作成、入力


フォームフィールドは、ユーザーの入力または選択のデータを収集するために使用されるテキストボックス、複数行テキストボックス、パスワードボックス、非表示ドメイン、チェックボックス、ラジオボックス、ドロップダウン選択ボックスなど、用途によってさまざまなタイプに分けることができます.次の例では、JavaプログラミングによってPDFにフォームドメインを追加および埋め込む方法について説明します.ここで、フォームフィールドを塗りつぶすには、フォームドメインを作成するときに塗りつぶす場合と、フォームドメインを作成したドキュメントをロードして塗りつぶす場合の2つに分けられます.また、フォームフィールドを作成して記入したドキュメントについても、変更、編集を防止するために読み取り専用を設定できます.
要点:
1.フォームフィールドの作成
2.フォームフィールドの入力
3.フォームフィールドの読み取り専用設定
ツール:Free Spire.PDF for Java v2.0.0(フリー)
Jarファイルのインポート
手順1:Libという名前のフォルダをJavaプログラムに新規作成します.パッケージ内の2つのjarファイルを新しいフォルダにコピーします.
手順2:ファイルをコピーしてリファレンスクラスライブラリに追加:この2つのjarファイルを選択し、右クリックして「Build Path」-「Add to Build Path」を選択します.参照を完了します.
Javaコードの例(参考)1.PDFフォームフィールドの作成と入力
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("      
:", 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); }

}作成(塗りつぶし)効果:
2.既存のフォームフィールドドキュメントをロードして入力する
テストドキュメントは次のとおりです.
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);
}

}パディング効果:
3.フォームフィールドの編集を制限(読み取り専用)
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");   
 }

}仕事を歓迎して1年から5年のJavaエンジニアの友达はJavaグループに参加します:741514154グループ内で無料のJavaアーキテクチャの学習資料を提供します(中には高可用性、高同時性、高性能と分布式、Jvm性能の調整、Springソースコード、MyBatis、Netty、Redis、Kafka、Mysql、Zookeeper、Tomcat、Docker、Dubbo、Nginxなどの多くの知識点のアーキテクチャ資料があります)自分の毎分毎秒の時間を合理的に利用して自分を向上させることを勉強して、更に“時間がありません”で自分の思想の上の怠惰を隠すことはできません!若いうちに、力を入れて頑張って、未来の自分に1つの説明をあげます!