2012-02-23 6 views
7

私は、iTextSharp 4.2.0を使用して159x159点の寸法に画像のサイズを変更できるようにしたいが、結果の画像は正確に指定された寸法を持つ必要がある。iTextSharp:固定サイズに合わせてイメージのサイズを変更するにはどうすればよいですか?

私はこれを試してみた:

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

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

例:このロークになります

enter image description here

そして、結果画像:

enter image description here

おかげ 私はこのイメージを持っています。

答えて

29

あなたが記述問題は、あなたがしようとは常にPdfPCellに合わせて画像を拡大縮小AddCell()を呼び出すことにより、PdfPTableに直接Imageを追加するときに何が起こるか一般的です。ですから、このような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); 
+0

これは非常に便利な回答です。ありがとう。 – Emanuel

+0

真剣に.. ..ありがとう。 –

+1

また、 'new PdfPCell()。setImage(img)'で画像を追加しないように注意してください。これは画像をセルの背景として追加し、セルの幅と高さに自動的に合わせます。 –

0

PdfPCellはこれだけtrueに設定されたセル内の画像を合わせてプロパティを持っています。

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

    PdfPCell logocell = new PdfPCell(logo,true); // **PdfPCell(Image,Boolean Fit)** 
関連する問題