フォームデータFDFファイルをPDFにインポート FDFファイルのFDFファイルフォームデータをPDFにインポートします。
FDFファイルに保存されているフォームデータをPDFにフォームを入力し、新規ファイルとして出力できます。
前項「7.1.1 FDFを用いたPDFフォームデータのエクスポート」で扱ったFDFファイルと組み合わせて使うこともできます。
サンプルプログラムでは、指定したFDFファイルのフォームデータをインポートして、入力PDFのフォームを入力して新規ファイルとして出力します。フォームフィールドの入力時にエラーが起こった項目がある場合は個数と内容を出力します。
package cookbook; import jp.co.antenna.ptl.*; public class ImportFormFieldsFromFDF { // そのクラスのusageを表示する関数 private static void printUsage() { System.out.print("usage: java ImportFormFieldsFromFDF in-pdf-file"); System.out.println(" out-pdf-file fdf-file-to-import"); } public static void main(String[] args) { if (args.length < 3) { printUsage(); return; } // コマンドライン引数の取得 try (PtlParamInput inputFile = new PtlParamInput(args[0]); PtlParamOutput outputFile = new PtlParamOutput(args[1]); PtlParamInput FdfToImport = new PtlParamInput(args[2]); PtlPDFDocument doc = new PtlPDFDocument()) { // PDFファイルをロードします。 doc.load(inputFile); try (PtlPages pages = doc.getPages()) {//ページコンテナの取得 // ページコンテナが空かどうか if (pages.isEmpty()) { System.out.println("ページコンテナが空です。処理を終了します。\n"); return; } } // FDFファイルからフォームフィールドデータをインポートする //(設定できなかったフォームフィールドの値を取得する) try(PtlFormFieldValues failedFormFieldValues = doc.importFormFieldsFromFDF(FdfToImport)) { getFailedFormFieldInfo(failedFormFieldValues); System.out.println("フォームフィールドデータをインポートしました。\n"); } // ファイルに保存します。 doc.save(outputFile); } ...【GetPDFVersion.javaと同じ処理のため省略 ・エラーメッセージ処理と出力】... } private static void getFailedFormFieldInfo(PtlFormFieldValues formFieldValues) throws PtlException, Exception, Error { int numOfFormFieldValues = formFieldValues.getCount(); System.out.println("設定できなかったフォームフィールドの数は " + numOfFormFieldValues + " 個です。"); //0個だった場合は処理を抜ける。 if(numOfFormFieldValues == 0) { return; } System.out.println("設定できなかったフォームフィールドの情報を表示します。"); System.out.println("---"); // 0個でなかった場合は処理を続け、情報を得る for(int i = 0; i < numOfFormFieldValues; i++) { System.out.println("-"); System.out.println("index No. " + i); try(PtlFormFieldValue formFieldValue = formFieldValues.get(i)) { System.out.println(" フォームフィールド名 : " + formFieldValue.getFieldName()); System.out.println(" フォームフィールド値 : " + formFieldValue.getValue()); } } System.out.println("---"); } }
ImportFormFieldsFromFDF.java
C:\samples>java cookbook.ImportFormFieldsFromFDF usage: java ImportFormFieldsFromFDF in-pdf-file out-pdf-file fdf-file-to-import C:\samples>java cookbook.ImportFormFieldsFromFDF 備品貸出申し込み書_blank.pdf Output_ImportFormFieldsFromFDF.pdf Output_ExportFormFieldsToFDF.fdf 設定できなかったフォームフィールドの数は 0 個です。 フォームフィールドデータをインポートしました。 -- 完了 --
この操作例では「7.1.1 FDFを用いたPDFフォームデータのエクスポート」でエクスポートしたFDFファイルを用いて空のPDFフォームにデータを入力しています。
データ入力前のフォームPDF(拡大図) | FDFファイルのデータがフォームフィールドに入力された出力PDF(拡大図) |