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