
フォームデータ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(拡大図) |