2011-02-08 30 views
6

Estoy intentando escalar una imagen para que sea de página completa en un documento PDF. Estoy generando el documento usando iTextSharp. La imagen tiene la relación de aspecto correcta para la página, pero preferiría que la imagen distorsione en lugar de no llenar toda el área disponible.Imagen de escala iTextSharp a página completa

Actualmente tengo:

Dim Document As New Document(PageSize, 0, 0, 0, 0) 
... 
Dim ContentImage = '''Method call to get image' 
Dim Content = iTextSharp.text.Image.GetInstance(ContentImage, New BackgroundColor) 
Content.SetAbsolutePosition(0, 0) 
Content.ScaleToFit(Document.PageSize.Width, Document.PageSize.Height) 
Document.Add(Content) 

Desafortunadamente, esto no da cuenta de los márgenes de la impresora ...

necesito la imagen al tamaño del área de impresión (lo mejor que se puede definir en una pdf)

Gracias de antemano

+0

@plinth Gracias, no había visto que uno – Basic

Respuesta

8

Si está decidido a hacerlo empíricamente, imprima una página con su código tal como lo hace con el borde de la página para que la imagen se vea negra en la primera media pulgada de margen, si pudiera ir al borde. Mida la distancia desde cada borde hasta el negro en pulgadas y divida cada una por 72.0.

Vamos a nombrar a:. Lm, rm, tm, bm (izquierda superior derecha márgenes inferiores

Dim pageWidth = document.PageSize.Width - (lm + rm); 
Dim pageHeight = document.PageSize.Height - (bm + tm); 
Content.SetAbsolutePosition(lm, bm); 
Content.ScaleToFit(pageWidth, pageHeight); 
Document.Add(Content) 
+0

tiene sentido, gracias – Basic

3

área imprimible está lista para imprimir dependiente, archivos PDF nada al respecto conocen. La página PDF puede tener contenido de margen a margen. Puede imprimir el archivo PDF con la opción 'Ajustar a los márgenes de la impresora' para que toda la página PDF se imprima a escala en el área imprimible de la impresora.

+0

Entendido - pero yo estoy usando la automatización de la impresión (inicialmente): 'Writer.AddJavaScript ("this.print (falso);", False) 'y preferiría evitar configurar manualmente las opciones de escalado. ¿Puede automatizarse? En este caso, es para imprimir documentos internos en una sola impresora, así que también puedo aceptar tener que conocer los márgenes apropiados y configurarlos en el PDF durante la generación. – Basic

1

Puede escalar una imagen para ajustarse a la página PDF mediante el uso siguiente fragmento de código

VB.

Dim img As iTextSharp.text.Image = iTextSharp.text.Image.GetInstance(System.Drawing.Image.FromStream(resourceStream), System.Drawing.Imaging.ImageFormat.Png) 
img.SetAbsolutePosition(0, 0) 
'set the position to bottom left corner of pdf 
img.ScaleAbsolute(iTextSharp.text.PageSize.A7.Width, iTextSharp.text.PageSize.A7.Height) 
'set the height and width of image to PDF page size 

C#

iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(System.Drawing.Image.FromStream(resourceStream, System.Drawing.Imaging.ImageFormat.Png); 
img.SetAbsolutePosition(0, 0); // set the position to bottom left corner of pdf 
img.ScaleAbsolute(iTextSharp.text.PageSize.A7.Width,iTextSharp.text.PageSize.A7.Height); // set the height and width of image to PDF page size 

Si quiere el código completo (C#) puede consultar el siguiente enlace también. El código completo agrega imágenes a todas las páginas de un PDF existente.

https://stackoverflow.com/a/45486484/6597375

Cuestiones relacionadas