GrapeCity.devlog

グレープシティ株式会社のDeveloper Tools〈開発支援ツール〉の、製品のTIPSや発売などに関する最新情報をお届けします。

GrapeCity

DioDocsでPDFフォームのデータ入出力を実装する

今回は、「DioDocs(ディオドック)」で追加された、PDFフォームのデータ入出力を実装するための機能を2つ紹介したいと思います。

1つ目は「FDF/XFDF/XMLのいずれかの形式でデータをインポート/エクスポート」する機能です。こちらは2019年6月26日(水)にリリースされたサービスパック「DioDocs V2J SP2」で追加されています。

2つ目は「フォームから送信されたデータをPDFフォームにインポート」する機能です。こちらは2019年12月18日(水)にリリースされた「DioDocs V3J」で追加されています。

それぞれの機能について解説していきます。

1. FDF/XFDF/XMLのいずれかの形式でデータをインポート/エクスポート

この機能は、PDFに設定されたPDFフォーム(AcroFormとも呼ばれます)に対して、FDF(.fdf)、XFDF(.xfdf)、XML(.xml)形式のデータを入力したり、PDFフォームからデータをFDF、XFDF、XML形式のデータとして出力することができます。

(1)PDFフォームからデータをエクスポート

PDFフォームからデータを出力するには、以下のメソッドを使用します。

  • ExportFormDataToFDF:FDF形式でデータを出力します。
  • ExportFormDataToXFDF:XFDF形式でデータを出力します。
  • ExportFormDataToXML:XML形式でデータを出力します。
var doc = new GcPdfDocument();

// PDFを読み込み
doc.Load(new FileStream("grapecity_order_embed.pdf", FileMode.Open, FileAccess.Read));

// FDFファイルとしてデータを出力
doc.ExportFormDataToFDF("FormData_FDF.fdf");

// XFDFファイルとしてデータを出力
doc.ExportFormDataToXFDF("FormData_XFDF.xfdf");

// XMLファイルとしてデータを出力
doc.ExportFormDataToXML("FormData_XML.xml"); 

記載しているコードが含まれるサンプルはこちらです。

GitHub - GrapeCityJP/DDExportFormData: DioDocsでPDFフォームのデータ入出力を実装する。

(2)PDFフォームにデータをインポート

PDFフォームにデータを入力するには、以下のメソッドを使用します。

  • ImportFormDataFromFDF:FDF形式でデータを入力します。
  • ImportFormDataFromXFDF:XFDF形式でデータを入力します。
  • ImportFormDataFromXML:XML形式でデータを入力します。
var doc = new GcPdfDocument();

// PDFを読み込み
doc.Load(new FileStream("grapecity_order_template.pdf", FileMode.Open, FileAccess.Read));

// FDFファイルからデータを入力
//FileStream stream = new FileStream("FormData_FDF.fdf", FileMode.Open, FileAccess.Read);
//doc.ImportFormDataFromFDF(stream);  

// XFDFファイルからデータを入力
FileStream stream = new FileStream("FormData_XFDF.xfdf", FileMode.Open, FileAccess.Read);
doc.ImportFormDataFromXFDF(stream);

// XMLファイルからデータを入力
//FileStream stream = new FileStream("FormData_XML.xml", FileMode.Open, FileAccess.Read);
//doc.ImportFormDataFromXML(stream);        

// PDFを保存
doc.Save("grapecity_order_embed.pdf");

記載しているコードが含まれるサンプルはこちらです。

GitHub - GrapeCityJP/DDImportFormData: DioDocsでPDFフォームのデータ入出力を実装する。

2. フォームから送信されたデータをPDFフォームにインポート

「1. FDF/XFDF/XMLのいずれかの形式でデータをインポート/エクスポート」のような、従来のデータ入力では、入力するデータをFDF、XFDF、XML形式のデータとしてあらかじめ用意しておく必要がありました。

そこでDioDocs V3Jで追加されたのがImportFormDataFromCollectionメソッドです。このメソッドは、慣れ親しんでいるKeyValuePairで用意されたデータのKeyを、フォームのフィールド名に自動的に紐づけてValueをそのフォームへ入力することができます。

// PDFフォームへ入力するデータ
var kvp = new KeyValuePair<string, IList<string>>[]
{
    new KeyValuePair<string, IList<string>>("氏名", new string[] { "葡萄城 太郎" }),
    new KeyValuePair<string, IList<string>>("会社名", new string[] { "ディオドック株式会社" }),
    new KeyValuePair<string, IList<string>>("フリガナ", new string[] { "ブドウジョウ タロウ" }),
    new KeyValuePair<string, IList<string>>("TEL", new string[] { "022-777-8888" }),
    new KeyValuePair<string, IList<string>>("部署名", new string[] { "ピノタージュ" }),
    new KeyValuePair<string, IList<string>>("住所", new string[] { "M県S市広瀬区花京院3-1-4" }),
    new KeyValuePair<string, IList<string>>("郵便番号", new string[] { "981-9999" }),
    new KeyValuePair<string, IList<string>>("Email", new string[] { "tarou.budojo@grapecity.com" })
};

var doc = new GcPdfDocument();

// PDFを読み込み
doc.Load(new FileStream("grapecity_order_template.pdf", FileMode.Open, FileAccess.Read));

// KeyValuePairからデータを入力
doc.ImportFormDataFromCollection(kvp);

// PDFを保存
doc.Save("grapecity_order_embed.pdf");

記載しているコードが含まれるサンプルはこちらです。

GitHub - GrapeCityJP/DDImportFormDataFromCollection: DioDocsでPDFフォームのデータ入出力を実装する。

まとめ

以前に当ブログで紹介したCodeZine記事やde:code 2019記事の内容では、Excelのテンプレートを用意しておいて、そこにDioDocs for Excelを使用してデータを入力する内容でした。

PDFを扱うケースにおいても、今回のようにPDFフォームが設定されているテンプレートを用意しておいて、そこに「DioDocs for PDF」を使用してデータを入力する、もしくはPDFフォームがあるPDFからデータを出力する、といったExcelと同じようなデータの入出力での利用方法も考えられるかと思います。

  • グレープシティ株式会社のDeveloper Tools〈開発支援ツール〉の製品のデモアプリケーションをお試しください。