非推奨バージョンのiTextSharp(4.1.6.0)を使用してMVC3アプリケーションからPDFを生成していますが、画像の色を薄くすることを目的として、他の形状や画像の上に半透明の形状を配置できる必要があります。その下、またはグレー表示にします。これは、図形の塗りつぶしの色を選択するときにアルファチャネルを設定するのと同じくらい簡単だと思っていたので、これを試しました。
Document doc = new Document();
PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream(@"C:/Filepath/doc.pdf", FileMode.Create))
doc.Open();
PdfContentByte over = writer.DirectContent;
// draw shape to be faded out
over.Rectangle(10, 10, 50, 50);
over.SetColorFill(Color.BLUE);
over.Fill();
// draw shape over the top to do the fading (red so i can easily see where it is)
over.Rectangle(0, 0, 60, 60);
over.SetColorFill(new Color(255,0,0,150)); // rgba
over.Fill();
doc.Close();
これにより、ページの左下近くに2つの長方形が描画され、小さな青い長方形に大きな赤い半透明の長方形が重ねられますが、赤い長方形は半透明ではありません。
だから私はグーグルをしてこのページを見つけました。これは実際にはiTextSharpではなくiTextに関するもので、PdfGstate
次のように塗りつぶしの不透明度を設定するために使用することを提案しています。
PdfGState gstate = new PdfGState();
gstate.setFillOpacity(0.3);
しかし、私が試してみると、オブジェクトには!gstate
のようなメソッドがありません。.setFillOpacity()
誰かが私を正しい方向に向けることができれば、私は最も感謝するでしょう。