iTextSharp:表格单元格中的平铺图像

joc*_*ull 5 .net c# pdf image itextsharp

我正在尝试在iTextSharp中的表格单元格中平铺图像或背景图像.我最接近的是使用PdfPTable和PdfPCell将图像直接附加到单元格.

tempCell = new PdfPCell();
tempCell.Image = iTextSharp.text.Image.GetInstance(Path.Combine(GetImageDirectory(), "my_image.gif"));
table.AddCell(tempCell);
Run Code Online (Sandbox Code Playgroud)

但这有其问题.我的表格中的单元格大小不一样,因此图像会按宽度自动缩放.这可以使一些细胞与其他细胞相比更高,或者如果它们很窄则只有半满的图像.

有关如何获取图像平铺的任何建议,如果甚至可以使用iTextSharp吗?谢谢!

Mar*_*rer 2

如果所有其他方法都失败,您可以创建一个图案填充并将其设置在单元格事件中(或填充在整个表格后面)。

PdfPatternPainter您将使用重复图案所需的边界将图像绘制到模板中。然后,您可以按照您想要的任何比例将图像绘制到此模板中。

PdfPatternPainter patternPainter = someContent.createPattern(width, height);
patternPainter.addImage( image, desiredImgSizeX, 0, 0, desiredImgSizeY, 0, 0 );

someContent.saveState();
someContent.setPatternFill( patternPainter );

someContent.rectangle( llx, lly, wid, hei );
someContent.fill();

someContent.restoreState();
Run Code Online (Sandbox Code Playgroud)

PdfPCellEvent将在 cellLayout 覆盖中获得所需的一切。您可能想用它canvases[PdfPTable.BASECANVAS]来代替someContent上面的内容。

您需要隐藏并重用您的 PatternPainter,这样您就不会在使用它的每个单元格中获得重复的内容。这可能会导致一些非常可怕的文件膨胀。没有博诺。