2012-02-23 60 views
7

Tôi muốn có thể thay đổi kích thước hình ảnh thành kích thước của 159x159 điểm, sử dụng iTextSharp 4.2.0, nhưng hình ảnh kết quả cần phải có chính xác kích thước được chỉ định.iTextSharp: Cách thay đổi kích thước hình ảnh để vừa với kích thước cố định?

Tôi đã thử điều này:

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

Nhưng hình ảnh không phải là một hình vuông. Nó giữ tỷ lệ khung hình.

Ví dụ: Tôi có hình ảnh này:

enter image description here

Và hình ảnh kết quả sẽ giống loke này:

enter image description here

Cảm ơn.

Trả lời

29

Vấn đề bạn mô tả thường là những gì sẽ xảy ra khi bạn cố gắng và thêm một Image trực tiếp đến một PdfPTable bằng cách gọi AddCell(), mà luôn quy mô hình ảnh để phù hợp với PdfPCell. Vì vậy, nếu bạn đang thêm hình ảnh vào Document như thế này:

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

gọi ScaleAbsolute() của bạn được bỏ qua. Để có được nhân rộng bạn muốn:

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

Đây là câu trả lời rất hữu ích. Cảm ơn. – Emanuel

+0

rất hữu ích .. Cảm ơn. –

+1

Ngoài ra hãy cẩn thận đừng thêm hình ảnh bằng 'PdfPCell mới(). SetImage (img)', điều này sẽ thêm hình ảnh làm nền của ô, nó sẽ tự động thu nhỏ với chiều rộng và chiều cao của ô. –

0

PdfPCell có tài sản để phù hợp với hình ảnh trong tế bào vì vậy chỉ cần thiết lập nó là true.

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

    PdfPCell logocell = new PdfPCell(logo,true); // **PdfPCell(Image,Boolean Fit)** 
Các vấn đề liên quan