JPedalでPDFフォームデータにアクセスする
JPedal PDFソフトウェアは、内部的にすべてのPDFフォームをフォームデータを表すPDF FormObjectに変換します。このFormObjectには、PdfFormUtilities クラスを使用して直接アクセスできます。
PdfFormUtilitiesクラスを使用すると、PDFファイルにFormオブジェクト、GUIオブジェクト、およびFormNamesのリストが存在する場合、それらにアクセスできます。以下のコード例では、これを行うためのいくつかの異なる例を示しています。
final PdfFormUtilities formUtils = new PdfFormUtilities("inputFile.pdf");
try {
if (formUtils.openPDFFile()) {
Object[] returnValues;
//ドキュメント内のすべてのフォーム(以下のいずれか)
returnValues = formUtils.getFormComponentsFromDocument(null, ReturnValues.FORMOBJECTS_FROM_REF);
returnValues = formUtils.getFormComponentsFromDocument(null, ReturnValues.FORMOBJECTS_FROM_NAME);
//5ページ目のすべてのフォーム(以下のいずれか)
returnValues = formUtils.getFormComponentsFromPage(null, ReturnValues.FORMOBJECTS_FROM_REF, 5);
returnValues = formUtils.getFormComponentsFromPage(null, ReturnValues.FORMOBJECTS_FROM_NAME, 5);
//すべてのformNames
returnValues = formUtils.getFormComponentsFromDocument(null, ReturnValues.FORM_NAMES);
//12ページ目のフォームのすべてのFormNames
returnValues = formUtils.getFormComponentsFromPage(null, ReturnValues.FORM_NAMES, 12);
//ドキュメント内のMabelという名前のすべてのフォーム
returnValues = formUtils.getFormComponentsFromDocument("Mabel", ReturnValues.FORMOBJECTS_FROM_NAME);
//5ページ目のMabelという名前のすべてのフォーム
returnValues = formUtils.getFormComponentsFromPage("Mabel", ReturnValues.FORMOBJECTS_FROM_NAME, 5);
//PDF参照を持つフォーム
returnValues = formUtils.getFormComponentsFromDocument("25 0 R", ReturnValues.FORMOBJECTS_FROM_REF);
//5ページ目のPDF参照を持つフォーム
returnValues = formUtils.getFormComponentsFromPage("25 0 R", ReturnValues.FORMOBJECTS_FROM_REF, 5);
//GUIコンポーネントに直接アクセスする必要がある場合は、以下を使用できます
//(Swingの場合、これらのオブジェクトの解決もトリガーされるため、
//明示的に必要でない限り、FormObjectsで作業することをお勧めします)
returnValues = formUtils.getFormComponentsFromDocument(null, ReturnValues.GUI_FORMS_FROM_NAME);
returnValues = formUtils.getFormComponentsFromPage(null, ReturnValues.GUI_FORMS_FROM_NAME, 5);
}
} catch (PdfException e) {
e.printStackTrace();
} finally {
formUtils.closePDFfile();
}
PdfFormUtilitiesを使用すると、PDFから生のXFAデータを抽出することもできます。
final PdfFormUtilities formUtils = new PdfFormUtilities("inputFile.pdf");
try {
if (formUtils.openPDFFile()) {
final byte[] xfaConfig = formUtils.getRawXFAData(PdfDictionary.XFA_CONFIG);
final byte[] xfaDataSet = formUtils.getRawXFAData(PdfDictionary.XFA_DATASET);
final byte[] xfaTemplate = formUtils.getRawXFAData(PdfDictionary.XFA_TEMPLATE);
}
} catch (PdfException e) {
e.printStackTrace();
} finally {
formUtils.closePDFfile();
}
