I want to make my background image in iText transparent.
Here is my code for the image:
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);
In your code, you're adding the
Image to the
Document instance. That's OK, but if you want to make such an image transparent, you need to introduce a soft mask. That's not difficult, but there's an easier way to make your background transparent: add the image to the direct content, and introduce a
PdfExtGState defining the opacity:
PdfCanvas canvas = new PdfCanvas(pdfDoc.addNewPage()); ImageData image = ImageDataFactory.create(imgSrc); canvas.saveState(); PdfExtGState state = new PdfExtGState(); state.setFillOpacity(0.6f); canvas.setExtGState(state); canvas.addImage(image, 0, 0, pageSize.getWidth(), false); canvas.restoreState();
You can compare the results of the examples mentioned above to see the difference.
My example is written in Java, but it's very easy to port this to C#.
Click this link if you want to see how to answer this question in iText 5.