iTextPdf中单元格右下角的图像

时间:2018-01-04 14:50:34

标签: c# pdf itext cells

我很难找到一种方法将图像放在iTextPdf表格中单元格的右下角。

我想在这里有图片: enter image description here

我正在玩IPdfPCellEvent,但到目前为止没有运气。

现在最后有一堆换行符,所以文本换行/溢出不是问题。

1 个答案:

答案 0 :(得分:0)

您可以使用像这样的IPdfPCellEvent实现:

public class ImageDecorator : IPdfPCellEvent
{
    Image image;

    public ImageDecorator(Stream inputImageStream)
    {
        image = Image.GetInstance(inputImageStream);
        image.ScaleToFit(100, 100);
    }

    public void CellLayout(PdfPCell cell, Rectangle position, PdfContentByte[] canvases)
    {
        PdfContentByte canvas = canvases[PdfPTable.BACKGROUNDCANVAS];
        canvas.AddImage(image, image.ScaledWidth, 0, 0, image.ScaledHeight, position.Right - image.ScaledWidth, position.Bottom);
    }
}

像这样使用

using (Stream inputImageStream = new FileStream(imageURL, FileMode.Open, FileAccess.Read))
using (FileStream fs = new FileStream(dest, FileMode.Create))
{
    ImageDecorator imageDecorator = new ImageDecorator(inputImageStream);

    Document doc = new Document(PageSize.A4);
    PdfWriter writer = PdfWriter.GetInstance(doc, fs);
    doc.Open();

    string loremIpsum = "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.";
    PdfPTable table = new PdfPTable(2);

    PdfPCell cell = new PdfPCell();
    cell.CellEvent = imageDecorator;
    cell.AddElement(new Paragraph(loremIpsum));
    table.AddCell(cell);

    cell = new PdfPCell();
    cell.CellEvent = imageDecorator;
    cell.AddElement(new Paragraph(loremIpsum));
    table.AddCell(cell);

    doc.Add(table);

    doc.Close();
}

我得到了

screenshot