2011-06-27 70 views
0

iTextSharpを使用して、PDF形式の既存のドキュメントにウォーターマークを追加しています。私はそれらを読んで、PdfTemplateオブジェクトを作成し、ウォーターマークのテキスト、色、透明度などをこのPdfTemplateに追加し、次にPdfWriter.DirectContentを使用して取得するPdfContentByteにテンプレートを追加します。ウォーターマークテキストのiText平坦化問題

このソリューションは、私がそれを投げたすべてのドキュメントでしばらくの間働いていますが、何らかの理由でいくつかの特定のPDFがウォーターマークテキストの周囲に不透明な矩形で印刷されています。

PdfGStateのOverPrintModeを1に設定し、作成後にファイルを開き、新しいコピーを保存する前にPdfStamperのsetFormFlatteningとsetFreeTextFlatteningを使用して、これまで数多くのことを試してみました。

問題は、フォームフィールドやボタンの平坦化には気をつけません。ドキュメント全体を生成した後は、ドキュメントのすべてのレイヤーを平坦化したいだけです。これはiText APIでも可能ですか?私は長い時間前にそれを解決したので、この1つを閉鎖するために戻ってくる

+0

私はまだこれで苦労しています。私は私の問題のいくつかを、私のPdfGStateインスタンスのTextKnockoutプロパティをfalseに設定することによって解決することができました。これは、文字通り私が見た最悪の文書化された機能です、Googleの検索は3つの結果を与える...それはテキストの周囲に不透明なボックスを配置しないように誰もPdfTemplateを変更することができましたか? –

+0

PdfTemplateはそれ自体では行いません。描画コマンドが既に存在するものをそのままラップします。コード/サンプルPDFをいくつか見ることができますか? –

+0

@Mark Storerこれは、PDFがPdfGStateの透過性プロパティを尊重しない古いバージョンであるかのように、透明性に問題があるようです。また、仮想プリンタを使用してこのファイルを新しいファイルに印刷すると、正常に表示されます。実際のプリンタに直接印刷する場合(問題のプリンタは表示されませんが、いくつか試しました)、問題が表示されます。 –

答えて

0

よし、:

問題は(PDF標準のバージョン1.3)問題を持つPDFファイルは非常に古いだったということであったとしませんでした透かし要素の一部であった透明度をサポートする。

古いPDFを仮想プリンタ経由でテンポラリファイルに印刷し、そのファイルを処理し続けています。このファイルは現在、PDF標準の新しいバージョンになっています。

関連する問題