プログラムによってフォーム値を更新する方法
JPedalには、組み合わせて使用することで様々なタスクを実現できるツールが用意されています。この場合、PDFFormUtilitiesとFormWriterを使用して、プログラムによってフォーム値を更新することができます。
これは、PDFFormUtilitiesからFormObjectsを取得し、それらを変更してから、FormWriterで保存することで実現されます。
FormObjectsはPDFFormUtilitiesを使用して取得でき、こちらでドキュメント化されています。
FormObjectsを取得するには、以下の手順が必要です。以下の例は、すべてのformObjectsを取得する方法、または1ページのみのformObjectsを取得する方法を示しています。
final PdfFormUtilities formUtils = new PdfFormUtilities("inputFile.pdf");
try {
if (formUtils.openPDFFile()){
final FormObject[] formArray = (FormObject[]) formUtils.getFormComponentsFromDocument(null,ReturnValues.FORMOBJECTS_FROM_REF);
final int page = 1;
final FormObject[] formArrayForPage = (FormObject[]) formUtils.getFormComponentsFromPage(null, ReturnValues.FORMOBJECTS_FROM_REF, page);
}
} catch (PdfException e) {
e.printStackTrace();
} finally {
formUtils.closePDFfile();
}
FormObjectsにアクセスできるようになったら、それらを変更することができます。FormObjects の値は、データ型に基づいたメソッドによってアクセスされます。更新したい値は複数存在する可能性がありますので、どの値を更新すべきかを確認するには、PDFリファレンスのインタラクティブフォームの章を読むことをお勧めします。
フォームオブジェクトが更新されたら、シンプルな1行のコードで値を保存できます。
FormWriter.writeForm
は、元のファイル、保存先のファイル(元のファイルまたは新しいコピーのいずれか)、およびファイルに保存するFormObjectsのリストを引数に取る静的メソッドです。
final File originalFile = new File("inputFile.pdf");
final File updatedFile = new File("outputFile.pdf");
final FormObject[] formArray; //先ほど作成して変更したもの
FormWriter.writeForms(originalFile, updatedFile, formArray);
