Active PDF Toolkit と Adobe の FDFToolkit を使用している PDF フォーム Web アプリケーションのリファクタリングに取り組んでいます。私の目標は、iTextSharp を使用して次のことを行うことです。
- データベースからのデータをフォーム フィールドに事前入力する
- ユーザーがFDF を介して署名および/またはバーコード画像を添付できるようにする
アイテム#1は問題ではありません。項目 2 は最大の課題です。背景を説明しましょう。
これは、PDF フォームを1 回レンダリングする Web アプリケーションです。初期ロード後、フォームには 2 つのキー ボタンがあり、PDF フォームを URL に送信し、クエリ文字列にアクション パラメータを指定します。これらのボタンは「保存」および「署名」と呼ばれます。[保存] ボタンは、FDF フィールド ディクショナリを取得してデータベースに保存します。[署名] ボタンは、ログインしているユーザーの署名を検索し、署名画像を FDF に添付して、FDF を HTTP 応答に書き込みます。
FDFToolkit は、次の方法を使用してフィールドに画像を添付することをサポートしています。
FDFSetAP(文字列 bstrFieldName, short whichFace, 文字列 bstrFileName, short pageNum)
iTextSharp は、FdfWriter クラスで同等のメソッドを提供しません。FdfWriter クラスをサブクラス化し、独自のメソッドを追加して画像を添付することを検討しましたが、ここに連絡して、誰かが同じ問題を抱えているかどうかを確認したかった.
この方法を使用してフィールドの上に画像を重ねることができましたが、これは FDF ではなく、基になる PDF にあります。
AcroFields.FieldPosition pos = _Stamper.AcroFields.GetFieldPositions("SIGNATUREFIELD").First();
Image signature = Image.GetInstance("Signature.gif");
image.SetAbsolutePosition(pos.position.Left, pos.position.Bottom);
image.ScaleToFit(pos.position.Width, pos.position.Height);
PdfContentByte pcb = _Stamper.GetOverContent(pos.page);
pcb.AddImage(image);
ありがとう!