将 Itext 中的背景图像更改为水印或更改不透明度 C# ASP.net
本文关键字:不透明度 net ASP 背景 图像 Itext | 更新日期: 2023-09-27 18:32:48
我想使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 示例。它是背景图像示例的变体。
在代码中,将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();