フォームフィールドを含むpdf
ファイルがあり、データをxml
ファイルにエクスポートする必要があります[〜#〜]自動的に[〜#〜]。これは、テスト用に作成したサンプルフォームの画面です。
注:エクスポートするとうまく機能します[〜#〜]手動[〜#〜]Tools > Form > Export Form Data
をクリックしてAcrobatProfessionalを使用し、最後にファイル出力にxml拡張子を選択します。これは、手動でエクスポートしたときに得られる結果です。
<?xml version="1.0" encoding="UTF-8"?>
<fields>
<first_name>John</first_name>
<last_name>Doe</last_name>
</fields>
ただし、自動化する必要があります。 pythonスクリプト、Java実装またはいくつかコマンドラインツール。フォームフィールドデータをxml
にエクスポートするために使用できるライブラリまたはツールはありますか?ツールまたはライブラリはオープンソースである必要があり、ワークフローに統合できます。
私はすでにpython pdfminer
ライブラリを試しました。これは、の静的部分(Static form header
、First name:
、Last name:
など)をエクスポートするのに役立ちました。 pdfファイル:しかし、フォームフィールドデータ(私の場合はフォームフィールドfirst_name
とlast_name
の内容)をエクスポートする方法は??
編集:sample.pdfファイルをダウンロードしてください ここ 。
Apache PDFBox はどうですか?ウェブサイトには「フォームデータをPDFフォームから抽出するか、PDFフォーム」に事前入力する」と記載されているため、オープンソースであり、ニーズに合う可能性があります。
編集: PrintFieldsの例 をチェックしてください。
Bashでは、これを行うことができます(少なくとも、これらのツールの私のバージョンでは、444とcat 8.13を減らします)。
less ~/Downloads/sample.pdf | cat
次のような出力が得られます。
Static form header
First name: John
Last name: Doe
その後、Java/Python/awk/whateverを使用してかなり明らかに解析できます。
もちろん、代わりに、これらの特定のバージョンの動作に依存したくない場合(常にこれを行うかどうかはわかりません)、 lessのソースコード を調べて方法を確認できますそれはそれをします。
Java PDFで動作するライブラリはいくつかありますが、一般的にPDFからフォーマットされた情報を取得するのは困難です。私はそれを実装したことはありませんが、Qoppaは見栄えがよく、高度なようですが、無料ではありません。フォームフィールドから値を抽出するのに役立つ jPDFFields が含まれています。また、コマンドラインツールに関する情報が含まれている 同様のスレッド もあります。
お役に立てば幸いです。
Javaソリューションの場合、 iText を使用してフィールドを読み取り、次に jackson-dataformat-xml のように結果を次のように書き込むことができます。 XML。A、やや基本的な例は次のとおりです。
// read fields
final PdfReader reader = new PdfReader("/path/to/my.pdf");
final AcroFields fields = reader.getAcroFields();
final Map<String, Object> values = new HashMap<>();
for (String fieldName : (Set<String>) fields.getFields().keySet()) {
values.put(fieldName, fields.getField(fieldName));
}
// write
final XmlMapper mapper = new XmlMapper();
final String result = mapper.writeValueAsString(values);
System.out.println(result);
ここには確かに改善の余地がありますが、それは十分な出発点かもしれません。