0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

JavaはPDFにフォームフィールドを追加します

Last updated at Posted at 2020-09-04

インタラクティブフィールドとも呼ばれるPDFフォームフィールドは、主にユーザー情報の収集に使用されます。一般的なフォームフィールドには、ラジオボタン、チェックボックス、リストボックス、およびコンボボックスが含まれます。このテキストでは、Free Spire.PDF for Javaを使用して、JavaプログラムでPDFフォームフィールドを作成する方法を紹介します。

JARパッケージのインポート
方法1:Free Spire.PDF for Javaをダウンロードして解凍し、libフォルダー内のjarパッケージを依存関係としてJavaアプリケーションに直接インポートします。

**方法2:**Mavenリポジトリーからjarパッケージをインストールし、pom.xmlファイルのコードを次のように構成します。

<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.free</artifactId>
      <version>2.6.3</version>
   </dependency>
</dependencies>

Javaコード

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 AddFormFields {
    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("MS Mincho",Font.PLAIN,12),true);

        //チェックボックスを追加
        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("オプション2", 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(false);
        page.getCanvas().drawString("オプション2", font,  brush2, new Point2D.Float(baseX+90, baseY));
        doc.getForm().getFields().add(checkBoxField);
        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("アイテム1", "item1"));
        listBoxField.getItems().add(new PdfListFieldItem("アイテム2", "item2"));
        listBoxField.getItems().add(new PdfListFieldItem("アイテム3", "item3"));;
        listBoxField.setBounds(rec);
        listBoxField.setFont(font);
        listBoxField.setSelectedIndex(0);
        doc.getForm().getFields().add(listBoxField);
        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("オプション1", 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("オプション2", 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 += 25;

        //コンボボックスを追加
        page.getCanvas().drawString("コンボボックス:", 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("アイテム1", "item1"));
        comboBoxField.getItems().add(new PdfListFieldItem("アイテム2", "itme2"));
        comboBoxField.getItems().add(new PdfListFieldItem("アイテム3", "item3"));
        comboBoxField.getItems().add(new PdfListFieldItem("アイテム4", "item4"));
        comboBoxField.setSelectedIndex(0);
        comboBoxField.setFont(font);
        doc.getForm().getFields().add(comboBoxField);
        baseY += 25;

        //署名フィールドを追加
        page.getCanvas().drawString("署名ドメイン:", font, brush1, new Point2D.Float(0, baseY));
        PdfSignatureField sgnField= new PdfSignatureField(page,"sgnField");
        Rectangle2D.Float sgnBounds = new Rectangle2D.Float(baseX, baseY, 150, 80);
        sgnField.setBounds(sgnBounds);
        doc.getForm().getFields().add(sgnField);
        baseY += 90;

        //追加ボタン
        page.getCanvas().drawString("送信ボタン:", font, brush1, new Point2D.Float(0, baseY));
        Rectangle2D.Float btnBounds = new Rectangle2D.Float(baseX, baseY, 50, 15);
        PdfButtonField buttonField = new PdfButtonField(page, "Button");
        buttonField.setBounds(btnBounds);buttonField.setText("送る");
        buttonField.setFont(font);
        doc.getForm().getFields().add(buttonField);

        //ドキュメントを保存します
        doc.saveToFile("AddFormField.pdf", FileFormat.PDF);
    }
}

p

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?