2017-05-29 13 views
0

作成したPDFに透明なPNGイメージを配置すると、iText(バージョン5.5.10)が自動的にソフトマスクを作成します。しかし、PDF仕様では明示的に述べているように、このマスクはグラフィックス状態の他の現在のソフトマスクよりも優先されるため、このマスクを削除する必要があります(または、iTextが最初に生成されないようにする必要があります)。後者のものが優先する。 nullを渡すと例外がスローされますので、 iTextが自動的に追加したSMaskを削除するには?

if (<my-condition> && picture?.ImageMask != null) 
    picture.ImageMask = null; 

が動作しない(iTextのは、明らかに任意のチェックをせずに提供された値を使用しようとすると、これはnull参照につながります)。

+0

あなたはiTextのは、単に透明ない画像を使用し、SMASKを作成したくない場合は!したがって、そのような場合は、透明部分を削除してイメージの前処理を行い、必要に応じて透明部分を置き換えてください。 – mkl

+0

さて、これを元に戻す必要があるかもしれませんが、これは私が好むアプローチだとは言いません。これらは私が簡単に前処理できるいくつかの手動で作成された画像ではありません。それは、生産システムの一部であり、そこでは大量に到着し、それに応じて処理する必要があります。既存の変数を単純に無効にするのではなく、コストのかかる前処理を行う。 :-) –

答えて

1

ああ、親愛なる私、私の悪い、私は訂正しましたが、私はドキュメントを閲覧しましたが、明白な解決策が最初に私を逃げました。そこはbooleanです:

if (<my-condition> && picture.Smask) 
    picture.Smask = false; 
+0

時々、想像以上に簡単です...;) – mkl

+0

マスクのためにMの文字を見て、Sの中でそれを書き留めませんでしたが、それはもちろん後天性ではっきりしています... :-) –

関連する問題