今回は、「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と同じようなデータの入出力での利用方法も考えられるかと思います。
弊社Webサイトでは、製品の機能を気軽に試せるデモアプリケーションやトライアル版も公開していますので、こちらもご確認いただければと思います。
また、ご導入前の製品に関するご相談やご導入後の各種サービスに関するご質問など、お気軽にお問合せください。