6

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

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

不过,这有它的问题。我的表格中的单元格大小永远不会相同,因此图像会按宽度自动缩放。这可以使某些单元格相对于其他单元格更高,或者如果它们很窄,则仅占图像的一半。

如果 iTextSharp 甚至可以的话,关于如何获得图像平铺的任何建议?谢谢!

4

2 回答 2

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

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

您需要存储和重用您的 patternPainter,这样您就不会为使用它的每个单元格重复。这可能会导致一些非常可怕的文件膨胀。没有贝诺。

于 2010-12-20T22:13:05.950 回答
0

尝试重用以下内容 Image imgLogo = Image.GetInstance(_pathToCustomLogo);

            if (imgLogo != null)
            {
                imgLogo.ScaleToFit(desiredLogoWidth, imgLogo.Height);
                Cell cellWithImage = new Cell();
                cellWithImage.Add(imgLogo);
                maintableHeader.AddCell(cellWithImage);
            }

再见

于 2010-11-30T17:17:53.760 回答