印刷フォームやPDFを作成/入力する最適な方法は? 質問する

印刷フォームやPDFを作成/入力する最適な方法は? 質問する

複雑なフォームを印刷する必要がある C# アプリケーションがあります。特定の形式でなければならない複数ページの政府コンプライアンス フォームなどです。これらのフォームの PDF コピーを取得してフォーム フィールドを作成することはできますが、このデータを入力して、自動印刷してクライアントに送信できる PDF を作成する方法がわかりません (クライアントには紙のコピーが必要です)。

また、一部のフォームは動的であり、特定のページを繰り返す必要があります (たとえば、従業員機会均等監査レポートの場合、従業員数が 50 人であるのにクライアントの従業員数が 250 人である場合、フォームに 1 ページのコピーを 5 部含める必要がある場合があります)。

一般的に、これらのフォームに入力して印刷する最適な方法は何ですか? 私たちのアプリケーションは C# ベースですが、どの言語/アプリでも、どのようなソリューションでも歓迎します (必要に応じてソフトウェアを購入したり、他のフレームワークと統合したりすることも可能です)。

たとえば、TurboTax のようなツールでは、処理する何百もの納税申告書を印刷するために何を使用するのでしょうか?

ベストアンサー1

ここにはいくつかのオプションがあります。

1) FDF、フォームデータ形式。これはひどい仕様文書で、FDF 形式のごく一部 (あまり使用されず、複雑な部分) しかカバーしていません。FDF ファイルの生成は比較的簡単で、多数のフィールド/値ペア (リスト オプションや、必要のないその他の複雑なものも含む) とファイル関連付けが含まれています。FDF を開くと、PDF が読み込まれます (Acrobat/Reader とのファイル関連付け経由)。

以下にサンプルを示します (読みやすくするために余分な空白を入れています)。

%FDF-1.2
1 0 obj
<< /FDF
  << /Fields  [
    << /V (Communications Co.)/T (Address1)>>
    << /V (29 Communications Road)/T (Address2)>>
    << /V (Busyville)/T (City)>>
    << /V (USA)/T (Country)>>
    << /V (24 January 2000)/T (Date)>>
    << /V (Suzie Smith)/T (Name)>>
    << /V (\(807\) 221-9999)/T (PhoneNumber)>>
    << /V (777-11-8888)/T (SSN)>>
    << /V (NJ)/T (State)>>
  ]
  /F (TestForm.pdf)
  >>
>>
endobj
trailer
<<
  /Root 1 0 R
>>
%%EOF

「/V」はフィールド値を示し、「/T」はフィールドのタイトルを示します。「/F」は入力するフォームへのパスです。

FDF と PDF を取り込み、入力された PDF フォームを作成できる、メールマージ風の製品が数多く出回っています。前述の iText (および他のいくつかの製品) はプログラムでこれを実行できますが、他のアプリにはコマンド ラインがあります。

この環境では、繰り返しが必要なページは独自のフォームにする必要があります。フォームの結合は非常に難しい場合があります。いくつかの方法がありますが、最も簡単なのは、フィールドを「フラット化」してページ コンテンツ (線画とテキスト) だけにすることです。これで、PDF フォームを結合する必要がなくなります。

もちろん、印刷順序を制御できる場合は、フォームを結合する必要はまったくありません。正しい順序でフォームを開いて印刷するだけで済みます。

私の記憶では、Acrobat Pro のバッチ コマンドは FDF データをインポートして印刷できます。必要なのは適切な FDF ファイルを生成することだけで、ほとんどは単純な文字列の構築です。

FDF を使用する場合、PDF フォームが既に作成されており、入力を待っている状態であることが前提となります。そうでない場合は...

2) PDF フォームをプログラムで生成します。私は iText (iTextSharp の Java ベース) を使ってこれを行いますが、さまざまな言語で利用できるライブラリは数多くあります。iText[Sharp] は AGPL (または商用) でライセンスされています。AGPL では、出力にアクセスできる人は誰でもアプリケーションのソースにアクセスできる必要があります。AGPL は通常の GPL と同様に「バイラル」です。古いバージョンは MPL で利用できました。

これは完全に社内用であり、PDF を印刷することを考えると、ライセンスはそれほど問題にはなりません。

フォーム テンプレートを一度生成し、直接または FDF 経由で入力する方がはるかに効率的です。

おすすめ記事