見出し画像

PDFフォームに外部からデータ入力する方法(PDFtk使用)

PDFフォームに外部からデータを入力したい」、という質問を目にすることがあります。

たしかに、客先からテキストボックスやドロップダウンリスト、リストボックスやボタンなどのフォームフィールドがあらかじめ設定されているPDFファイルを渡されて、必要事項を記入後に返信する機会もありますし、そういった作業を自動化したいという需要も多くあるのでしょう。

製品版のAdobe Acrobatを使用しているのであれば、下記記事のようにVBAマクロを使って値を入力することもできますが、そうでない場合はどうすれば良いのか悩むところではあります。

Power Automate for desktopなどのRPAツールでマウスやキーボードを操作する方法もありますが、安定性に欠けるので個人的にはあまりお薦めはしません。

そこで今回は「PDFtk」を使ってPDFフォームにデータ入力する方法をご紹介します。


PDFtkとは

Wikipediaに概要が記載されていたので、こちらを引用させていただきます。

PDFtk(PDF Toolkitの略)は、クロスプラットフォームのPDFドキュメント操作ツールである。PDFtk Server(オープンソースのコマンドラインツール)、PDFtk Free(フリーウェア)、PDFtk Pro(有償のプロプライエタリ)[3]の3つのバージョンが提供されている。

https://ja.wikipedia.org/wiki/PDFtk より

PDFtkのインストール方法

PDFtkには有料版の「PDFtk Pro」と無料版の「PDFtk Free」があり、それぞれで利用可能な機能が分かれていますが、今回は「PDFtk Free」を使用します。

インストール方法は下記のサイトで詳しく書かれていたので、こちらが参考になるでしょう。

PDFtkの本体は通常 C:\Program Files (x86)\PDFtk\bin\pdftk.exe にインストールされるため、本記事でもこちらに実行ファイルがある前提で説明していきます。

各フィールドの情報を取得

インストールが終わったら、さっそくPDFtkを使用していきます。
※今回は処理をすべてコマンドプロンプトで行っていきます。

対象ファイル

今回はテスト用に下図のPDFファイルを用意しました。
「氏名」「年齢」「連絡先」の3つのテキストフィールドだけがあるシンプルなファイルです(C:\Test\PDF\SampleField.pdf)。

データを入力するにあたり、“どこに入力するのか?”を知る必要があるため、まずは各フィールドの名前を取得します。

フィールド情報を取得するコマンド

"C:\Program Files (x86)\PDFtk\bin\pdftk.exe" "C:\Test\PDF\SampleField.pdf" dump_data_fields_utf8 output "C:\Test\PDF\dump.txt"

dump_data_fields_utf8」オプションで各フィールドの情報を出力でき(日本語対応)、「output」オプションを付けることで、指定した場所にファイルとして結果を保存できます。

上記コマンドを実行した結果、以下のテキスト(dump.txt)が出力されました。これを見ると、文字通り「FieldName」として各フィールドの名前が出力されていることが分かります。

---
FieldType: Text
FieldName: 氏名
FieldNameAlt: 氏名
FieldFlags: 4096
FieldJustification: Left
---
FieldType: Text
FieldName: 年齢
FieldNameAlt: 年齢
FieldFlags: 4096
FieldJustification: Left
---
FieldType: Text
FieldName: 連絡先
FieldNameAlt: 連絡先
FieldFlags: 4096
FieldJustification: Left

各フィールドへのデータ入力

フィールドに入力するデータファイルの作成

各フィールドの名前が分かったので、次は入力するデータファイルを準備します。
今回は「XFDF」という形式のXMLファイルを使用します。
(XFDFの詳細については下記サイトをご参照ください。)

メモ帳などのテキストエディターで下記XMLファイルを作成します(C:\Test\PDF\SampleField_data.xfdf、文字コード:UTF-8)。

<?xml version="1.0" encoding="UTF-8"?>
<xfdf xmlns="http://ns.adobe.com/xfdf/" xml:space="preserve">
  <fields>
    <field name="氏名">
      <value>ほげ田ほげ子</value>
    </field>
    <field name="年齢">
      <value>18</value>
    </field>
    <field name="連絡先">
      <value>hoge@***.com</value>
    </field>
  </fields>
</xfdf>

上記の通り、field要素のname属性の値としてフィールドの名前を、value要素で入力する値を指定しています。

フィールドにテータ入力するコマンド

"C:\Program Files (x86)\PDFtk\bin\pdftk.exe" "C:\Test\PDF\SampleField.pdf" fill_form "C:\Test\PDF\SampleField_data.xfdf" output "C:\Test\PDF\output.pdf" need_appearances

fill_form」オプションで作成したxfdfファイルを指定します。
このとき「need_appearances」オプションを付けることで、文字化けすることなく日本語も入力することができます。

上記コマンドを実行した結果は下図の通りです(output.pdf)。

ちゃんと指定した値が入力されているようです。


以上のようにPDFtkを使用することでPDFフォームに外部からデータを入力することができます。
PDFフォームへの入力でお困りの方は是非お試しください!

いいなと思ったら応援しよう!