我有两张图片(iTextSharp.text.Image
),我希望将它们直接放在PdfPCell
的顶部。其中一张图片具有透明度,应放在最顶层。
我尝试了以下内容:
imgOpaque.Alignment = Image.UNDERLYING;
imgOpaque.SetAbsolutePosition(10f, 10f);
imgTransparent.SetAbsolutePosition(10f, 10f);
var cell = new PdfPCell();
cell.AddElement(imgOpaque);
cell.AddElement(imgTransparent);
table.AddCell(cell);
但是这会导致第二张图像位于第一张图像之后 - 而不是顶部。
如何将两张图片叠加在一起?
iTextSharp版本为5.4.3。
答案 0 :(得分:0)
为“底部”图片实施IPdfPCellEvent
。
public class CellBackgroundImage : IPdfPCellEvent { private Image _background; public void SetImage(string path) { _background = Image.GetInstance(path); } public void CellLayout( PdfPCell cell, Rectangle rectangle, PdfContentByte[] pcb) { PdfContentByte cb = pcb[PdfPTable.BACKGROUNDCANVAS]; cb.AddImage(_background, rectangle.Width, 0, 0, rectangle.Height ,rectangle.Left, rectangle.Bottom ); } }
创建PdfPCell
,设置CellEvent
属性,然后添加“顶部”图片。
using (Document document = new Document()) { PdfWriter.GetInstance(document, stream); // any Stream object document.Open(); PdfPTable table = new PdfPTable(1); CellBackgroundImage cbi = new CellBackgroundImage(); cbi.SetImage(imageBottomPath); Image imageTop = Image.GetInstance(imageTopPath); PdfPCell imageCell = new PdfPCell(); imageCell.CellEvent = cbi; imageCell.AddElement(imageTop); table.AddCell(imageCell); document.Add(table); }