2012-02-23 13 views
7

Chcę móc zmienić rozmiar obrazu do wymiaru 159x159 punktów, używając iTextSharp 4.2.0, ale wynikowy obraz musi mieć dokładnie określone wymiary.iTextSharp: Jak zmienić rozmiar obrazu, aby dopasować go do rozmiaru?

Próbowałem to:

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

Ale obraz nie jest kwadratem. Zachowuje proporcje.

Przykład: mam ten obraz:

enter image description here

a obraz Rezultat powinien wyglądać tak: Loke

enter image description here

Dzięki.

Odpowiedz

29

opisać problemem jest zwykle to, co dzieje się, gdy spróbujesz dodać Image bezpośrednio do PdfPTable wywołując AddCell(), który zawsze skaluje obraz, aby pasował do PdfPCell. Więc jeśli dodajesz obraz do Document tak:

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

rozmowa ScaleAbsolute() jest ignorowany. Aby uzyskać skalowanie chcesz:

PdfPTable table = new PdfPTable(1); 
table.AddCell(new PdfPCell(img)); 
document.Add(table); 
+0

Jest to bardzo przydatna odpowiedź. Dzięki. – Emanuel

+0

bardzo przydatne .. Dzięki. –

+1

Należy również zachować ostrożność, nie dodając obrazu za pomocą "nowego PdfPCell() .setImage (img)", spowoduje to dodanie obrazu jako tła komórki, zostanie automatycznie dopasowany do szerokości i wysokości komórki. –

0

PdfPCell ma właściwość, aby dopasować obraz w komórce, więc po prostu ustawić go na true.

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

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