在Itext中更改背景图像以水印或改变不透明度c#ASP.net

时间:2014-12-02 04:10:15

标签: c# asp.net itextsharp

我想让我的背景图像在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);

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

请查看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.pdfbackground_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();