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

cellLayoutPdfPCellEventオーバーライドで必要なものがすべて与えられます。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 に答える