none
impresion en printdocument RRS feed

  • Pregunta

  •  hola a todos, necesito ayuda, necesito imprimir una cadena que ya la tengo formada en una hoja de ancho estandar por altura de 3.65625. Esto porque necesito imprimir en hojas continuas y necesito configurar exactamente la altura de la hoja de impresion, pues de lo contrario de descuadraria la impresion.

    Por favor, requiero ayuda urgente gracias.....

    jueves, 20 de septiembre de 2007 17:02

Respuestas

  • Hola Wil_blank_c_yahoo.com

    El punto es que deberas controlar el páginado desde el evento PrintPage del objeto PrintDocument. Para poder delimitar los registros a imprimir, deberás tener en cuenta el Alto y Ancho del área de impresión que te queda al restar los margenes configurados para la hoja.

    Un ejemplo de ello sería el siguiente:

    Dim xAreaImpresion_Alto As Integer
    Dim xAreaImpersion_Ancho As Integer

    xAreaImpresion_Alto = .PaperSize.Height - .Margins.Top - .Margins.Bottom

    xAreaImpresion_Ancho = .PaperSize.Width - .Margins.Left - .Margins.Right

    Si te vales de un DataTable con la serie de registros para la impresión, deberás también calcular cuantos renglones caben dentro del xAreaImpresion_Alto. Eso dependerá del tipo de fuente que utilices en la impresión (Arial "8", Arial "10", etc.).

    Para determinar cuantos renglones puedes imprimir dentro del área disponible de impresión podemos manejar el objeto Font delimitando el tipo de fuente a utilizar y con base al Height de la fuente calcular los renglones a imprimir por cada página. Ejemplo:

    Dim xFont_toPrint As New Font("Arial", 8)
    Dim intRows_toPrint As Integer

    intRows_toPrint = xAreaImpresion_Alto \ xFont_toPrint.Height

    Es improtante que manejes un par de variables que controles por cada vez que se ejecute el evento PrintPage para determinar cual ha sido el último renglón impreso y esto te defina si es necesario agregar más página a la impresión. La propiedad del objeto "e" (printPageEventArguments) que deberás utilizar dentro del evento PrintPage es el siguiente:

               e.HasMorePages = True (para adicionar otra página si faltan renglones por imprimir)

               ó  e.HasMorePages = False (cuando ya no tengas más renglones por imprimir)

    Con ello podrás controlar cuantas páginas realmente se deben integrar al PrintDocument. Espero que te sea útil la información. Estamos en contacto. Bye.



     


    Fernando Gómez García
    martes, 3 de febrero de 2009 23:58