在Itext中更改背景图像以水印或改变不透明度c#ASP.net
我想让iText中的背景图像透明化
这是我的图像代码:
string root = Server.MapPath("~"); string parent = Path.GetDirectoryName(root); string grandParent = Path.GetDirectoryName(parent); string imageFilePath = parent + "/Images/logo.png"; iTextSharp.text.Image jpg = iTextSharp.text.Image.GetInstance(imageFilePath); jpg.ScaleToFit(1700, 800); jpg.Alignment = iTextSharp.text.Image.UNDERLYING; jpg.SetAbsolutePosition(100, 250); jpg.ScaleAbsoluteHeight(500); jpg.ScaleAbsoluteWidth(500);
任何的想法?
请查看BackgroundTransparant示例。 它是BackgroundImage示例的变体。
在您的代码中,您将Image
添加到Document
实例。 没关系,但是如果你想让这样的图像透明,你需要引入一个软掩码。 这并不困难,但有一种更简单的方法可以使背景透明:将图像添加到直接内容,并引入定义不透明度的PdfGState
:
PdfContentByte canvas = writer.getDirectContentUnder(); Image image = Image.getInstance(IMAGE); image.SetAbsolutePosition(0, 0); canvas.SaveState(); PdfGState state = new PdfGState(); state.setFillOpacity(0.6f); canvas.setGState(state); canvas.addImage(image); canvas.restoreState();
将background_image.pdf与background_transparent.pdf进行比较以查看差异。
我的例子是用Java编写的,但将它移植到C#非常容易:
PdfContentByte canvas = writer.DirectContentUnder; Image image = Image.GetInstance(IMAGE); image.SetAbsolutePosition(0, 0); canvas.SaveState(); PdfGState state = new PdfGState(); state.FillOpacity = 0.6f; canvas.SetGState(state); canvas.AddImage(image); canvas.RestoreState();