2012-02-23 142 views
7

Quiero poder cambiar el tamaño de una imagen a la dimensión de 159x159 puntos, utilizando iTextSharp 4.2.0, pero la imagen resultante debe tener exactamente las dimensiones especificadas.iTextSharp: ¿Cómo cambiar el tamaño de una imagen para que se ajuste a un tamaño fijo?

He intentado esto:

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

Pero la imagen no es un cuadrado. Mantiene la relación de aspecto.

Ejemplo: tengo esta imagen: la imagen el resultado

enter image description here

Y debe buscar loke esto:

enter image description here

Gracias.

Respuesta

29

El problema que usted describe es normalmente lo que sucede cuando se intenta añadir un Image directamente a un PdfPTable llamando AddCell(), que siempre escala la imagen para adaptarse a la PdfPCell. Así que si va a añadir la imagen a la Document siguiente manera: se ignora

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

su llamada ScaleAbsolute(). Para obtener la escala que desee:

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

Esta es una respuesta muy útil. Gracias. – Emanuel

+0

seriamente útil .. Gracias. –

+1

También tenga cuidado, no agregue imágenes por 'nuevo PdfPCell(). SetImage (img)', esto agregará la imagen como fondo de la celda, se ajustará automáticamente al ancho y alto de la celda. –

0

PdfPCell tiene la propiedad para adaptarse a la imagen en la celda por lo que sólo ponemos a true.

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

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