3

iTextSharp を使用して書式設定されたテキストを PDF フォーム フィールドに追加する必要がありますが、理解できないようです。これは私が現在フィールドを設定している方法ですが、挿入されたテキストの特定の部分は太字にするか、他のフォーマットにする必要があります。

stamper.AcroFields.SetField("fieldName", "fieldValue")
stamper.FormFlattening = True

代わりに書式設定情報を含む xml を挿入できるはずだと他の場所で見たことがありますが、この xml がどのように見えるべきかわかりません。

私が望むことが可能であると私に信じさせるそのページのセクションは次のとおりです。

実際の XML コードはフィールドにスタンプされますが、Reader はそれをスタンプされた PDF でリッチ テキストとしてレンダリングしません。

そして、これに対する作業応答:

これを機能させるには、AcroFields.setGenerateAppearances(false) を呼び出す必要があります。古いバージョンの Reader では外観が生成されないことに注意してください。

この xml はどのように見えるべきですか、またはこれを達成する別の方法はありますか?

4

1 に答える 1

0

少し前に、フィールドのリッチ テキスト値を設定する機能を iText に追加しました。これをバックアップするためのレンダリング コードは追加しませんでした。

つまり、豊富な価値を確認する唯一の方法は、それをサポートする PDF ビューア (Reader/Acrobat) を使用することです。すべてのフィールドの外観を再構築する必要があることを彼らに知らせるには、 を呼び出す必要がありますacroFields.setGenerateAppearances(false)。これにより、iText の外観の生成が無効になり、代わりに PDF ビューアがそれを行うように要求されます。

iText[Sharp] 内で完全にフラット化されたリッチテキストが必要な場合は、何か厄介なことをする必要があります。

  1. リッチ テキストを別のドキュメントの PDF ページに描画します。このページのサイズは、フィールドのサイズと一致する必要があります。保存します (メモリ ストリームで問題ありません)。
  2. 新しい を追加しPushbuttonField、 に設定しLAYOUT_ICON_ONLYます。元のテキスト フィールドと同じバウンディング ボックスを使用します。プッシュボタンの背景色をnull(透明) に設定します。
  3. リッチ テキスト ページの を作成し、PdfImportedPageこのインポートしたページを新しいPushbuttonFieldのアイコン (テンプレート) に設定します。
  4. 平らにする。

痛いけど効果あり。

#1 を HTMLWorker で実行し、元のリッチ テキスト/HTML を入力として使用できます。

実際、HTMLWorker で ColumnText オブジェクトをフィードして HTML を新しいドキュメントではなく同じドキュメントにレンダリングし、それを書き出して再度読み込むことで、おそらくかなり効率的になる可能性があります。適切なバウンディング ボックスを使用して、古いページの DirectContent から PdfTemplate を作成します。

それははるかに少ないです。

于 2011-03-16T00:22:02.843 に答える