3

生成されたバーコード ファイルに基づいて画像を挿入する必要があります。

私が抱えている問題は、iTextSharp ライブラリを使用するときに、通常、次のようなテキストを入力できることです。

PdfReader pdfReader = new PdfReader(oldFile);
PdfStamper pdfStamper = new PdfStamper(pdfReader, outFile);
AcroFields fields = pdfStamper.AcroFields;
fields.SetField("topmostSubform[0].Page1[0].BARCODE[0]", "X974005-1");

pdfでクリックすると、フィールドに画像を挿入するように求められるフィールドが1つありますが、プログラムでこれを達成できないようです。いくつかのGoogle検索とstackoverflowページに出くわしたことに基づいて、希望どおりに動作することを期待して次のコードを挿入しました。

string fieldName = "topmostSubform[0].Page1[0].BARCODE[0]";
string imageFile = "test-barcode.jpg";
AcroFields.FieldPosition fieldPosition = pdfStamper.AcroFields.GetFieldPositions(fieldName)[0];
PushbuttonField imageField = new PushbuttonField(pdfStamper.Writer, fieldPosition.position, fieldName);
imageField.Layout = PushbuttonField.LAYOUT_ICON_ONLY;
imageField.Image = iTextSharp.text.Image.GetInstance(imageFile);
imageField.ScaleIcon = PushbuttonField.SCALE_ICON_ALWAYS;
imageField.ProportionalIcon = false;
imageField.Options = BaseField.READ_ONLY;
pdfStamper.AcroFields.RemoveField(fieldName);               
pdfStamper.AddAnnotation(imageField.Field, fieldPosition.page);

私が抱えている問題は、意図したとおりに既存のフィールドを削除している間です。新しく作成した PDF ファイルを開くと、この新しいプッシュ ボタン フィールドが目的の画像ファイルではなく空白として表示されますが、デバッグでこれを実行すると表示されます。モード 少なくとも画像ファイルの正しい寸法を取得していることがわかるので、ここで何が間違っているのかわかりません。

アドバイスしてください、ありがとう。

4

1 に答える 1

2

公式ドキュメント (つまり: my book ) を読むと、次の例が見つかります: ReplaceIcon.cs

を使用してフィールドを削除しpdfStamper.AcroFields.RemoveField(fieldName);、その後、を使用して新しいフィールドを追加しようとしていますpdfStamper.AddAnnotation(imageField.Field, fieldPosition.page);

それは間違っている。を使用してフィールドを置き換える必要がありますpdfStamper.AcroFields.ReplacePushbuttonField(fieldname, imageField.Field);

このReplacePushbuttonField()メソッドは、舞台裏で多くの設定をコピーします。

于 2013-03-27T15:20:50.560 に答える