2014-12-02 106 views
1

我想在iText的我的背景图片透明更改背景图片水印或改变透明度的C#ASP.net

这里是我的形象代码:

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

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