作成したPDFに透明なPNGイメージを配置すると、iText(バージョン5.5.10)が自動的にソフトマスクを作成します。しかし、PDF仕様では明示的に述べているように、このマスクはグラフィックス状態の他の現在のソフトマスクよりも優先されるため、このマスクを削除する必要があります(または、iTextが最初に生成されないようにする必要があります)。後者のものが優先する。 null
を渡すと例外がスローされますので、 iTextが自動的に追加したSMaskを削除するには?
if (<my-condition> && picture?.ImageMask != null)
picture.ImageMask = null;
が動作しない(iTextのは、明らかに任意のチェックをせずに提供された値を使用しようとすると、これはnull参照につながります)。
あなたはiTextのは、単に透明ない画像を使用し、SMASKを作成したくない場合は!したがって、そのような場合は、透明部分を削除してイメージの前処理を行い、必要に応じて透明部分を置き換えてください。 – mkl
さて、これを元に戻す必要があるかもしれませんが、これは私が好むアプローチだとは言いません。これらは私が簡単に前処理できるいくつかの手動で作成された画像ではありません。それは、生産システムの一部であり、そこでは大量に到着し、それに応じて処理する必要があります。既存の変数を単純に無効にするのではなく、コストのかかる前処理を行う。 :-) –