Imprimir linea a linea en Visual Basic .NET

28 comentarios

Bueno aquí os dejo una de las muchas formas que podemos imprimir en VB.NET. En este caso no utilizaremos Crystal Report pero si el objeto PrintDocument.

Creamos un formulario e insertamos un objeto de tipo printDocument, al que llamamos HojaImpresion.
Insertarmos tambien un control button al que llamaremos cmdImprimir.


Pulsamos doble_click sobre el control HojaImpresion para irnos directamente procedimiento:


Private Sub HojaImpresion_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles HojaImpresion.PrintPage
        Try
            ' La fuente a usar
            Dim prFont As New Font("Arial", 15, FontStyle.Bold)
            ' la posición superior

            'imprimimos la fecha y hora
            prFont = New Font("Arial", 10, FontStyle.Regular)
            e.Graphics.DrawString(Date.Now.ToShortDateString.ToString & " " &  _
                                Date.Now.ToShortTimeString.ToString, prFont, Brushes.Black, 15, 385)

            'imprimimos el nombre del cliente
            prFont = New Font("Arial", 25, FontStyle.Bold)
            e.Graphics.DrawString("Nombre del Cliente", prFont, Brushes.Black, 50, 250)

            'imprimimos la referencia del pedido
            e.Graphics.DrawString("Referencia", prFont, Brushes.Black, 50, 520)
            prFont = New Font("Arial", 18, FontStyle.Bold)
            e.Graphics.DrawString("Nombre de la Referencia", prFont, Brushes.Black, 50, 555)

            'imprimimos Pedido Ondupack y Pedido del cliente
            prFont = New Font("Arial", 22, FontStyle.Regular)
            e.Graphics.DrawString("Pedido", prFont, Brushes.Black, 50, 660)
            e.Graphics.DrawString("Palets", prFont, Brushes.Black, 250, 660)

            prFont = New Font("Arial", 24, FontStyle.Regular)
            e.Graphics.DrawString("19875", prFont, Brushes.Black, 50, 700)
            e.Graphics.DrawString("44", prFont, Brushes.Black, 250, 700)

            'imprimimos Cajas X Palet y Cajas x Paquete
            prFont = New Font("Arial", 22, FontStyle.Regular)
            e.Graphics.DrawString("Cajas x Palet", prFont, Brushes.Black, 50, 760)
            e.Graphics.DrawString("Cajas x Paquete", prFont, Brushes.Black, 250, 760)

            prFont = New Font("Arial", 24, FontStyle.Regular)
            e.Graphics.DrawString("500", prFont, Brushes.Black, 50, 800)
            e.Graphics.DrawString("32", prFont, Brushes.Black, 250, 800)

            'imprimimos el numero del Palet
            prFont = New Font("Arial", 24, FontStyle.Regular)
            e.Graphics.DrawString("Número del Palet     45", prFont, Brushes.Black, 50, 880)
            'indicamos que hemos llegado al final de la pagina
            e.HasMorePages = False

        Catch ex As Exception
            MessageBox.Show("ERROR: " & ex.Message, "Administrador", _
                              MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try


     End Sub


Despues pulsamos doble click sobre el boton cmdImprimir:


    Private Sub cmdImprimir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdImprimir.Click
        HojaImpresion.Print()
    End Sub


De esta forma cuando ejecutemos nuestro programa, pulsaremos sobre el boton Imprimir del formulario y nos saldrá como resultado:



el evento e.Graphics tiene varias funciones para escribir distinto tipos. Por ejemplo si queremos imprimir una imagen:
     e.Graphics.DrawImage(PictureBox1.Image, 380, 335, 75, 75)

Nota: Posible Error.
Si alguna vez ejecutáis el código y os aparece una excepción con Mensaje "Controlador No Valido" en referencia a la instancia del printDocument, se debe a un problema con la impresora que tengáis asociada como predenterminada en ese momento.
Por si os pasa a vosotros, que he perdido casi 1 hora buscando el problema.
Saludos.



28 comentarios:

un groso, la mejor explicación que encontré..... y funciona!!!!

27 de octubre de 2012, 17:02 comment-delete

ERES LO MEJOR..NUNCA CAMBIES!!! ME HA SALVADO LA VIDA

Anónimo
17 de julio de 2013, 10:19 comment-delete

Hola buen día, esta excelente el post, tengo una duda, como podría crear dos hojas e imprimirlas de forma duplex!! saludos

1 de octubre de 2013, 13:45 comment-delete

Al fin!!!! Alguien que pudo explicar el tema sin tanto enredo. Muchas gracias

Anónimo
10 de marzo de 2014, 19:24 comment-delete

TE amo Simplemente te amo!!!

21 de marzo de 2014, 15:23 comment-delete

Hola quisiera saber como hago para imprimir un documento con un solo encabezado, pero con contenido en mas de una pagina

Anónimo
21 de enero de 2015, 13:54 comment-delete

Lo primero, felicitarte por la calidad y claridad de tu información, nos has ayudado mucho.
Segundo preguntarte una cosa. Si yo mando a imprimir así un ticket, como sé que ése ticket se ha impreso correctamente?? Me explico, yo tengo un programa que va imprimiendo tickets segun van llegando, y los almaceno en un Datagridview, por lo que no puedo imprimir el ticket siguiente, hasta que sepa con seguridad que el actual ticket se ha impreso y marcarlo como impreso. Existe manera de saber si al intentar imprimir el actual ticket, tenemos un error de impresión, y de qué tipo se trata?
Muchas gracias por adelantado.

Anónimo
8 de abril de 2015, 10:04 comment-delete

Hola, no se si hay forma de recoger un error de impresion desde un dispositivo, aunque si puedes dar la opcion de reimprimir el ticket que ha tenido el error, es decir de forma manual.

10 de abril de 2015, 9:10 comment-delete

Hola! Si, la opción de reimpresión la tienen, incluso pueden acceder al histórico de tickets para reimpresión los que quieran, pero si la impresora de fallo y el ticket sale del data gris como impreso, tendría un grave problema con mi cliente, ya que imagínate que pasa con 100tickets seguidos en cuestión de 5minutos y esos pedidos no se preparan! Necesito saber seguro que un ticket se imprime, y sino lo hace informar al cliente de que existe un problema y lo debe solucionar para que no se acumulen los pedidos. Si sabes de algún método o de alguien que te lo pudiese facilitar la información para ayudarme te lo agradecería eternamente! Lo que no puedo entender es que vb2010 Net no tenga una función para eso. Si encuentras algo o alguien me puede ayudar no duden en escribirme a:

kaisgoo@hotmail.com

Muchas gracias.

Anónimo
12 de abril de 2015, 2:46 comment-delete

Alguien me podria ayudar en como puedo implementar eso en una aplicacion de consola (VB)
Gracias.

Anónimo
5 de septiembre de 2015, 12:02 comment-delete

Supremo aporte bro.
Muchas garcias

19 de febrero de 2016, 19:35 comment-delete

A la primera! Muchas gracias!!!!!

:D

Anónimo
10 de julio de 2016, 12:32 comment-delete

Hola, sabes como se podria hacer esto en Vb.Net pero en Visual Studio 2015 ? Muchisimas gracias de antemano.

27 de julio de 2016, 20:03 comment-delete

En Visual Studio 2015 es igual, solo tienes tener un objeto PrintDocument y meter el codigo.

27 de julio de 2016, 23:55 comment-delete

Simplemente, gracias! me haz aliviado los dolores de cabeza con estas impresiones, Saludos y muchos éxitos

23 de agosto de 2016, 21:53 comment-delete

me haz salvado la vida.

12 de septiembre de 2016, 10:10 comment-delete

como imprimir el texto mas grande en visual basic 6.0

16 de septiembre de 2016, 9:58 comment-delete

Muy buen aporte excelente explicación muchas gracias por compartir tu conocimiento me sirvió muchísimo gracias!!!!!!

Anónimo
18 de septiembre de 2016, 13:54 comment-delete

Cuando se manda la impresion aparece un dialogo con un boton que tiene el foco de Cancelar, ese dialogo no se puede ocultar?

8 de agosto de 2017, 10:39 comment-delete

Solamente ¡GRACIAS!

Anónimo
13 de octubre de 2017, 18:46 comment-delete

buen material gracias

29 de mayo de 2018, 18:02 comment-delete

Excelente aporte me ha servido muchisimo, Mil Gracias

Anónimo
12 de julio de 2018, 10:12 comment-delete

Me sirvió exactamente para lo que necesitaba, claro que falta especificar que sirve más para imprimir en impresora normal de página carta o A4; yo necesitaba para ticketera pero haciendo ajustes y modificando coordenadas sirvió a la perfección. Muchas gracias por tu aporte

26 de septiembre de 2018, 7:47 comment-delete

Muy buena explicacion,
habria algun ejemplo de como hacer:
e.Graphics.DrawString("Número del Palet 45" ....
que el "Numero 45" que salga en negrita???
Gracias!!!

5 de octubre de 2018, 12:29 comment-delete

para imprimir GridView?

7 de noviembre de 2018, 13:58 comment-delete

Como puedo imprimir varias etiquetas, si me pudieran ayudar?? por favor

12 de septiembre de 2019, 16:28 comment-delete
Este comentario ha sido eliminado por el autor.
23 de octubre de 2020, 13:20 comment-delete

Muchas gracias tu ejemplo funciona de maravilla imprime perfecto en una impresora POS conectada por USB. Quería preguntarle como puedo enviar esto a una impresora en RED.

23 de octubre de 2020, 13:21 comment-delete
Publicar un comentario

Related Posts Plugin for WordPress, Blogger...
Copyright 2011 INFORMATICUCHO.
Blogger Template by Noct.