web-dev-qa-db-ja.com

iTextSharp:固定サイズに合うように画像のサイズを変更するにはどうすればよいですか?

ITextSharp 4.2.0を使用して、画像のサイズを159x159ポイントのサイズに変更できるようにしたいのですが、結果の画像は正確に指定されたサイズである必要があります。

私はこれを試しました:

Image image = Image.GetInstance(imagePath);
image.ScaleAbsolute(159f, 159f);

しかし、画像は正方形ではありません。アスペクト比を維持します。

例:私はこの画像を持っています:

enter image description here

そして、結果の画像は次のようになります。

enter image description here

ありがとう。

7
Emanuel

あなたが説明する問題は、通常、AddCell()を呼び出してImagePdfPTableに直接追加しようとするとどうなるかです。これは常にスケーリングします。 PdfPCellに合う画像。したがって、次のように画像をDocumentに追加する場合は次のようになります。

_Image img = Image.GetInstance(imagePath);
img.ScaleAbsolute(159f, 159f);
PdfPTable table = new PdfPTable(1);
table.AddCell(img);
document.Add(table);
_

ScaleAbsolute()呼び出しは無視されます。必要なスケーリングを取得するには:

_PdfPTable table = new PdfPTable(1);
table.AddCell(new PdfPCell(img));
document.Add(table);
_
36
kuujinbo

PdfPCell画像をセルに収めるプロパティがあるため、trueに設定するだけです。

  iTextSharp.text.Image logo = iTextSharp.text.Image.GetInstance("/test.png");

  PdfPCell logocell = new PdfPCell(logo,true); //  **PdfPCell(Image,Boolean Fit)**
6
Pragnesh Mistry