27

私は住んでいる場所の近くにあるフードパントリーの「プロボノ」開発を行っています。フォームや事務処理が殺到しているため、MySQL サーバー (以前のプロジェクトでセットアップしたもの) からデータを読み取り、必要なすべてのフォームの PDF バージョンにデータをフィードするシステムを開発したいと考えています。記入してください。これにより、フォームへの入力時に発生する多くの人為的ミスをなくすだけでなく、非常に役立ち、多くの時間を節約できます。

PDF ファイルの内部については何も知らないので、ここで 2 つの方法を予測できます。

  • より難しい方法: 紙の文書をスキャンして PDF に変換し、「次の (x,y) 座標に何かを除くテキストを追加する...」言うだけで PDF に「記入」するソフトウェアを使用することができます。 ; また
  • 簡単な方法: PDF 仕様では、入力可能な「フィールド」の構成が既に許可されています。このようにして、「* address_value *というフィールドにテキストの抜粋を追加する...」などのコードを書くだけです。

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

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

4

3 に答える 3

26

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

Adobe はそれを行うためのライブラリを提供しています: Acrobat Forms Data Format (FDF) Toolkit

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

于 2012-07-28T15:26:41.397 に答える
5

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

または、このビデオを見て、フォームをレポートに使用する方法を順を追って説明しています。

たとえば、次を参照してください。

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();
}
于 2015-05-11T10:48:53.613 に答える