2
我使用iTextSharp(4.1.6.0)的不推薦版本從我的MVC3應用程序生成PDF,並且確實需要能夠在其他頂部放置半透明形狀形狀和圖像,目標是淡化圖像下方的顏色,或將其變灰。我本來以爲這將是作爲設置選擇顏色時形狀填充Alpha通道那麼簡單,所以我想這:在iTextSharp中使用半透明填充繪製形狀4.1.6.0
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();
我希望它可以繪製頁面左下角附近的兩個矩形,一個小的藍色覆蓋着一個更大的紅色,半透明的,但紅色的不是半透明的!
所以我做了一些谷歌上搜索,發現這個page,這實際上是關於iText的不是iTextSharp的,他們建議使用PdfGstate
設置填充不透明度是這樣的:
PdfGState gstate = new PdfGState();
gstate.setFillOpacity(0.3);
但是當我嘗試了gstate
對象沒有類似.setFillOpacity()
的任何方法!如果任何人都能指出我正確的方向,我將非常感激。
哦,我看,我不知道。雖然它不會引發任何錯誤,但它也不會導致任何透明度。我在Adobe Reader 11和Windows 8的pdf閱讀器中打開它,兩者的結果都一樣。 – Ben
我修改了應用PdfGState的答案。它適用於我,現在紅色的矩形是透明的。 – VahidN
優秀!完美的作品非常感謝你。值得注意的是,設置alpha在這裏沒有什麼區別,透明度的高低完全取決於FillOpacity。 – Ben