在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();