web-dev-qa-db-ja.com

自動化する方法PDFフォーム入力Java

私は、私が住んでいる場所の近くのフードパントリーの「無料」開発を行っています。彼らはフォームと書類に殺到しており、MySQLサーバーからデータを読み取り(以前のプロジェクトでセットアップした)、データをPDFこれにより、非常に多くの時間を節約でき、これらのフォームに入力するときに行われる多くの人為的エラーを取り除くことができます。

anything PDFファイルの内部についてはわからない。

  • ハードウェイ:紙のドキュメントをスキャンしてPDFに変換し、「追加」と言うだけでPDF blahを除くテキストを次の(x、y)座標に... ";または
  • 簡単な方法:PDF仕様では、記入可能な「フィールド」の構成がすでに許可されています。このように、「テキストの抜粋を追加- blah * address_value * ...と呼ばれるフィールドに、など。

私の最初の質問は、2つの道のうちどちらに直面していますか? PDFには「フィールド」という概念がありますか、またはPDFライブラリに配置する場所のピクセル座標を伝えることにより、これらの文書に「記入」する必要がありますかデータ?

第二に、これを行うには明らかにオープンソース(およびJava)ライブラリが必要です。 iTextは良いスタートのように思えますが、作業が難しいと聞きました。誰かがここでいくつかのアイデアや一般的な推奨事項を貸してもらえますか?前もって感謝します!

23
IAmYourFaja

FDF(Form Data Format)テクノロジーを使用して、データをPDFのフィールドに簡単にマージできます。

アドビはそのためのライブラリを提供しています。 Acrobat Forms Data Format(FDF)Toolkit

また、 Apache PDFBox を使用してそれを行うことができます。

20
RealHowTo

無料の電子ブックのインタラクティブフォームに関する章をご覧ください StackOverflowに関するiTextのベストの質問 。次のような質問に対する回答をまとめています。

または、 このビデオ をご覧ください 報告にフォームを使用する方法 ステップバイステップ。

インスタンスを参照してください:

public void manipulatePdf(String src, String dest) throws DocumentException, IOException {
    PdfReader reader = new PdfReader(src);
    PdfStamper stamper = new PdfStamper(reader,
            new FileOutputStream(dest));
    AcroFields fields = stamper.getAcroFields();
    fields.setField("name", "CALIFORNIA");
    fields.setField("abbr", "CA");
    fields.setField("capital", "Sacramento");
    fields.setField("city", "Los Angeles");
    fields.setField("population", "36,961,664");
    fields.setField("surface", "163,707");
    fields.setField("timezone1", "PT (UTC-8)");
    fields.setField("timezone2", "-");
    fields.setField("dst", "YES");
    stamper.setFormFlattening(true);
    stamper.close();
    reader.close();
}
5
Bruno Lowagie