Resultados 1 al 3 de 3

Tema: Imprimir ticket en Vb.net 2005

  1. #1
    Fecha de ingreso
    14 dic, 08
    Ubicación
    Veracruz
    Mensajes
    86

    Exclamation Imprimir ticket en Vb.net 2005

    Hola buen día amigos, quisiera ver si alguno de ustedes me puede orientar como poder mandar a imprimir un ticket en VB.Net 2005, mi base de datos la tengo en access 2007, es para un sistema de punto de venta, pero no le hayo, la forma, investigando en internet me encontre que existe una forma mediante Crystal Reports pero la verdad no le entiendo muy bien, ya que nunca lo he utilizalizado, alguien me puede ayudar por favor se los agradeceria mucho.

  2. #2
    Fecha de ingreso
    09 mar, 10
    Ubicación
    Chiapa de Corzo
    Mensajes
    215

    Predeterminado

    aqui una clase que encontre y que ya use y funciona chingon
    trae la clase y como usarla
    Código:
    Imports System
    Imports System.ComponentModel
    Imports System.Windows.Forms
    Imports System.Drawing
    Imports System.Drawing.Printing
    Imports System.IO
    Public Class ticket
                Public LineasDeLaCabeza As ArrayList = New ArrayList()
                Public LineasDeLaSubCabeza As ArrayList = New ArrayList()
                Public Elementos As ArrayList = New ArrayList()
                Public Totales As ArrayList = New ArrayList()
                Public LineasDelPie As ArrayList = New ArrayList()
                Private headerImagep As Image
    
                Public contador As Integer = 0
    
                Public CaracteresMaximos As Integer = 35
                Public CaracteresMaximosDescripcion As Integer = 20
    
                Public imageHeight As Integer = 0
    
                Public MargenIzquierdo As Double = 10
                Public MargenSuperior As Double = 13
    
                Public NombreDeLaFuente As String = "Lucida Console"
                Public TamanoDeLaFuente As Integer = 9
    
                Public FuenteImpresa As Font
                Public ColorDeLaFuente As SolidBrush = New SolidBrush(Color.Black)
    
                Public gfx As Graphics
    
                Public CadenaPorEscribirEnLinea As String = ""
                Private WithEvents DocumentoAImprimir As New PrintDocument
    
                Public Sub Ticket()
    
    
                End Sub
    
                Public Property HeaderImage() As Image
                      Get
                             Return headerImagep
                      End Get
                      Set(ByVal value As Image)
                         'If headerImagep.Width <> value.Width Then
    
                         'End If
                         headerImagep = value
                      End Set
                End Property
    
    
    
                Public Property MaximoCaracter() As Integer
                      Get
                          Return CaracteresMaximos
                      End Get
                      Set(ByVal value As Integer)
                          If (value <> CaracteresMaximosDescripcion) Then CaracteresMaximosDescripcion = value
                      End Set
                End Property
    
    
    
                Public Property MaximoCaracterDescripcion() As Integer
                      Get
                          Return CaracteresMaximosDescripcion
                      End Get
                      Set(ByVal value As Integer)
                          If (value <> CaracteresMaximosDescripcion) Then CaracteresMaximosDescripcion = value
                      End Set
                End Property
    
                
    
                Public Property TamanoLetra() As Integer
                      Get
                       Return TamanoDeLaFuente
                      End Get
                      Set(ByVal value As Integer)
                          If (value <> TamanoDeLaFuente) Then TamanoDeLaFuente = value
                      End Set
                End Property
    
    
                Public Property NombreLetra() As String
                      Get
                          Return NombreDeLaFuente
                      End Get
                      Set(ByVal value As String)
                          If (value <> NombreDeLaFuente) Then NombreDeLaFuente = value
                      End Set
                End Property
    
    
                Public Sub AnadirLineaCabeza(ByVal linea As String)
                      LineasDeLaCabeza.Add(linea)
                End Sub
    
                Public Sub AnadirLineaSubcabeza(ByVal linea As String)
    
                      LineasDeLaSubCabeza.Add(linea)
                End Sub
    
                Public Sub AnadirElemento(ByVal cantidad As String, ByVal elemento As String, ByVal precio As String)
    
                      Dim NuevoElemento As OrdenarElementos = New OrdenarElementos()
                      '''''items.Add(newitem.
                      Elementos.Add(NuevoElemento.GenerarElemento(cantidad, elemento, precio))
                End Sub
    
                 Public Sub AnadirTotal(ByVal Nombre As String, ByVal Precio As String)
                      Dim NuevoTotal As OrdernarTotal = New OrdernarTotal
                    ' OrderTotal(newtotal)
    
                      Totales.Add(NuevoTotal.GenerarTotal(Nombre, Precio))
                End Sub
    
                Public Sub AnadeLineaAlPie(ByVal linea As String)
                      LineasDelPie.Add(linea)
                End Sub
    
                Private Function AlineaTextoaLaDerecha(ByVal Izquierda As Integer) As String
    
                    Dim espacios As String = ""
                    Dim spaces As Integer = MaximoCaracter() - Izquierda
                    Dim x As Integer
                      For x = 0 To spaces
                            espacios += " "
                      Next
                      Return espacios
                End Function
    
                Private Function DottedLine() As String
    
                      Dim dotted As String = ""
                      Dim x As Integer
                      For x = 0 To MaximoCaracter()
                            dotted += "="
                      Next
                      Return dotted
                End Function
    
                Public Function ImpresoraExistente(ByVal impresora As String) As Boolean
    
                      For Each strPrinter As String In PrinterSettings.InstalledPrinters
    
                            If impresora = strPrinter Then
                                  Return True
                            End If
                      Next strPrinter
                      Return False
                End Function
    
                Public Sub ImprimeTicket(ByVal impresora As String)
    
                      FuenteImpresa = New Font(NombreLetra, TamanoLetra, FontStyle.Regular)
                      'Dim pr As New PrintDocument
                      DocumentoAImprimir.PrinterSettings.PrinterName = impresora
                      'pr.PrinterSettings.printpa()
                    ' pr.PrintPage += New
                    ' PrintPageEventHandler(pr_PrintPage)
                      DocumentoAImprimir.Print()
    
                End Sub
    
                Private Sub DocumentoAImprimir_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles DocumentoAImprimir.PrintPage
                      e.Graphics.PageUnit = GraphicsUnit.Millimeter
                      gfx = e.Graphics
    
                      'DrawImage()
                      'DrawHeader()
                      DibujaLaCabecera()
                      'DrawSubHeader()
                      DibujaLaSubCabecera()
                      'DrawItems()
                      DibujaElementos()
                      'DrawTotales()
                      DibujaTotales()
                      DibujarPieDePagina()
    
                      'If (headerImagep.Width <> 0) Then
                      '      HeaderImage.Dispose()
                      '      HeaderImage.Dispose()
                      'End If
                End Sub
    
                Private Function Renglon() As Double
                      Return MargenSuperior + (contador * FuenteImpresa.GetHeight(gfx) + imageHeight)
                End Function
    
                Private Sub DrawImage()
    
                      If (headerImagep.Width <> 0) Then
    
                          Try
    
                                gfx.DrawImage(HeaderImage, New Point(CInt(MargenIzquierdo), CInt(Renglon())))
                                Dim height As Double = (HeaderImage.Height / 58) * 15
                                imageHeight = CInt(Math.Round(height) + 3)
    
                            Catch ex As Exception
    
                          End Try
    
    
                      End If
                End Sub
    
                Private Sub DibujaLaCabecera()
    
                      For Each Cabecera As String In LineasDeLaCabeza
    
                            If (Cabecera.Length > MaximoCaracter()) Then
    
                                  Dim CaracterActual As Integer = 0
                                  Dim LongitudDeCabecera As Integer = Cabecera.Length
    
                                  While (LongitudDeCabecera > MaximoCaracter())
    
                                        CadenaPorEscribirEnLinea = Cabecera.Substring(CaracterActual, MaximoCaracter)
                                        gfx.DrawString(CadenaPorEscribirEnLinea, FuenteImpresa, ColorDeLaFuente, MargenIzquierdo, Renglon(), New StringFormat())
                                        contador += 1
                                        CaracterActual += MaximoCaracter()
                                        LongitudDeCabecera -= MaximoCaracter()
                                  End While
                                  CadenaPorEscribirEnLinea = Cabecera
                                  gfx.DrawString(CadenaPorEscribirEnLinea.Substring(CaracterActual, CadenaPorEscribirEnLinea.Length - CaracterActual), FuenteImpresa, ColorDeLaFuente, MargenIzquierdo, Renglon(), New StringFormat())
                                  contador += 1
    
                            Else
    
    
                                  CadenaPorEscribirEnLinea = Cabecera
                                  gfx.DrawString(CadenaPorEscribirEnLinea, FuenteImpresa, ColorDeLaFuente, MargenIzquierdo, Renglon(), New StringFormat())
    
                                  contador += 1
                            End If
                      Next Cabecera
                       DibujaEspacio()
                End Sub
    
                Private Sub DibujaLaSubCabecera()
    
                      For Each SubCabecera As String In LineasDeLaSubCabeza
    
                            If (SubCabecera.Length > MaximoCaracter()) Then
    
                                  Dim CaracterActual As Integer = 0
                                  Dim LongitudSubcabecera As Integer = SubCabecera.Length
    
                                  While (LongitudSubcabecera > MaximoCaracter())
    
                                        CadenaPorEscribirEnLinea = SubCabecera
                                        gfx.DrawString(CadenaPorEscribirEnLinea.Substring(CaracterActual, MaximoCaracter), FuenteImpresa, ColorDeLaFuente, MargenIzquierdo, Renglon(), New StringFormat())
    
                                        contador += 1
                                        CaracterActual += MaximoCaracter()
                                        LongitudSubcabecera -= MaximoCaracter()
                                  End While
                                  CadenaPorEscribirEnLinea = SubCabecera
                                  gfx.DrawString(CadenaPorEscribirEnLinea.Substring(CaracterActual, CadenaPorEscribirEnLinea.Length - CaracterActual), FuenteImpresa, ColorDeLaFuente, MargenIzquierdo, Renglon(), New StringFormat())
                                  contador += 1
    
                            Else
    
                                  CadenaPorEscribirEnLinea = SubCabecera
    
                                  gfx.DrawString(CadenaPorEscribirEnLinea, FuenteImpresa, ColorDeLaFuente, MargenIzquierdo, Renglon(), New StringFormat())
    
                                  contador += 1
    
                                  CadenaPorEscribirEnLinea = DottedLine()
    
                                  gfx.DrawString(CadenaPorEscribirEnLinea, FuenteImpresa, ColorDeLaFuente, MargenIzquierdo, Renglon(), New StringFormat())
    
                                  contador += 1
                            End If
                      Next SubCabecera
                       DibujaEspacio()
                End Sub
    
                Private Sub DibujaElementos()
    
                      Dim OrdenElemento As OrdenarElementos = New OrdenarElementos()
    
                      gfx.DrawString("CANT   DESCRIPCION                IMPORTE", FuenteImpresa, ColorDeLaFuente, MargenIzquierdo, Renglon(), New StringFormat())
    
                      contador += 1
                      DibujaEspacio()
    
                      For Each Elemento As String In Elementos
    
                            CadenaPorEscribirEnLinea = OrdenElemento.ObtenerCantidadDeElementos(Elemento)
    
                            gfx.DrawString(CadenaPorEscribirEnLinea, FuenteImpresa, ColorDeLaFuente, MargenIzquierdo, Renglon(), New StringFormat())
                            CadenaPorEscribirEnLinea = OrdenElemento.ObtenerPrecioElemento(Elemento)
                            CadenaPorEscribirEnLinea = AlineaTextoaLaDerecha(CadenaPorEscribirEnLinea.Length) + CadenaPorEscribirEnLinea
    
                            gfx.DrawString(CadenaPorEscribirEnLinea, FuenteImpresa, ColorDeLaFuente, MargenIzquierdo, Renglon(), New StringFormat())
    
                            Dim Nombre As String = OrdenElemento.ObtenerNombreElemento(Elemento)
    
                            MargenIzquierdo = 10
                            If (Nombre.Length > MaximoCaracterDescripcion) Then
    
                                  Dim CaracterActual As Integer = 0
                                  Dim LongitudElemento As Integer = Nombre.Length
    
                                  While (LongitudElemento > MaximoCaracterDescripcion)
    
                                        CadenaPorEscribirEnLinea = OrdenElemento.ObtenerNombreElemento(Elemento)
                                        gfx.DrawString("         " + CadenaPorEscribirEnLinea.Substring(CaracterActual, MaximoCaracterDescripcion), FuenteImpresa, ColorDeLaFuente, MargenIzquierdo, Renglon(), New StringFormat())
    
                                        contador += 1
                                        CaracterActual += MaximoCaracterDescripcion
                                        LongitudElemento -= MaximoCaracterDescripcion
                                  End While
    
                                  CadenaPorEscribirEnLinea = OrdenElemento.ObtenerNombreElemento(Elemento)
                                  gfx.DrawString("         " + CadenaPorEscribirEnLinea.Substring(CaracterActual, CadenaPorEscribirEnLinea.Length - CaracterActual), FuenteImpresa, ColorDeLaFuente, MargenIzquierdo, Renglon() + 10, New StringFormat())
                                  contador += 1
    
                            Else
    
                                  gfx.DrawString("         " + OrdenElemento.ObtenerNombreElemento(Elemento), FuenteImpresa, ColorDeLaFuente, MargenIzquierdo, Renglon(), New StringFormat())
    
                                  contador += 1
                         End If
                      Next Elemento
    
                      MargenIzquierdo = 10
                       DibujaEspacio()
                      CadenaPorEscribirEnLinea = DottedLine()
    
                      gfx.DrawString(CadenaPorEscribirEnLinea, FuenteImpresa, ColorDeLaFuente, MargenIzquierdo, Renglon(), New StringFormat())
    
                      contador += 1
                       DibujaEspacio()
                End Sub
    
                Private Sub DibujaTotales()
    
                      Dim ordTot As OrdernarTotal = New OrdernarTotal()
    
                      For Each total As String In Totales
    
                            CadenaPorEscribirEnLinea = ordTot.ObtenerTotalCantidad(total)
                            CadenaPorEscribirEnLinea = AlineaTextoaLaDerecha(CadenaPorEscribirEnLinea.Length) + CadenaPorEscribirEnLinea
    
                            gfx.DrawString(CadenaPorEscribirEnLinea, FuenteImpresa, ColorDeLaFuente, MargenIzquierdo, Renglon(), New StringFormat())
                            MargenIzquierdo = 10
    
                            CadenaPorEscribirEnLinea = "         " + ordTot.ObtenerTotalNombre(total)
                            gfx.DrawString(CadenaPorEscribirEnLinea, FuenteImpresa, ColorDeLaFuente, MargenIzquierdo, Renglon(), New StringFormat())
                            contador += 1
                      Next total
                      MargenIzquierdo = 10
                       DibujaEspacio()
                       DibujaEspacio()
                End Sub
    
                Private Sub DibujarPieDePagina()
    
                      For Each PieDePagina As String In LineasDelPie
    
                            If (PieDePagina.Length > MaximoCaracter()) Then
    
                                  Dim currentChar As Integer = 0
                                  Dim LongitudPieDePagina As Integer = PieDePagina.Length
    
                                  While (LongitudPieDePagina > MaximoCaracter())
    
                                        CadenaPorEscribirEnLinea = PieDePagina
                                        gfx.DrawString(CadenaPorEscribirEnLinea.Substring(currentChar, MaximoCaracter), FuenteImpresa, ColorDeLaFuente, MargenIzquierdo, Renglon(), New StringFormat())
    
                                        contador += 1
                                        currentChar += MaximoCaracter()
                                        LongitudPieDePagina -= MaximoCaracter()
                                  End While
                                  CadenaPorEscribirEnLinea = PieDePagina
                                  gfx.DrawString(CadenaPorEscribirEnLinea.Substring(currentChar, CadenaPorEscribirEnLinea.Length - currentChar), FuenteImpresa, ColorDeLaFuente, MargenIzquierdo, Renglon(), New StringFormat())
                                  contador += 1
    
                            Else
    
                                  CadenaPorEscribirEnLinea = PieDePagina
                                  gfx.DrawString(CadenaPorEscribirEnLinea, FuenteImpresa, ColorDeLaFuente, MargenIzquierdo, Renglon(), New StringFormat())
    
                                  contador += 1
                         End If
                      Next PieDePagina
                      MargenIzquierdo = 10
                       DibujaEspacio()
                End Sub
    
                Private Sub DibujaEspacio()
    
                      CadenaPorEscribirEnLinea = "   "
    
                      gfx.DrawString(CadenaPorEscribirEnLinea, FuenteImpresa, ColorDeLaFuente, MargenIzquierdo, Renglon(), New StringFormat())
    
                      contador += 1
    
              End Sub
    
    Public Sub New()
    
    End Sub
    
    
    End Class
                
    
    
                
    Public Class OrdenarElementos
    
                Public delimitador() As Char = "|||"
    
    
                Public Sub OrdenarElementos(ByVal delimit As Char)
                    Dim delimitador As Char = delimit
                End Sub
    
    
                Public Function ObtenerCantidadDeElementos(ByVal orderItem As String) As String
    
                      Dim delimitado() As String = orderItem.Split(delimitador)
                      Return delimitado(0)
                End Function
    
                Public Function ObtenerNombreElemento(ByVal orderItem As String) As String
    
                      Dim delimitado() As String = orderItem.Split(delimitador)
                      Return delimitado(1)
                End Function
    
                Public Function ObtenerPrecioElemento(ByVal orderItem As String) As String
    
                      Dim delimitado() As String = orderItem.Split(delimitador)
                      Return delimitado(2)
                End Function
    
                Public Function GenerarElemento(ByVal cantidad As String, ByVal NombreElemento As String, ByVal Precio As String) As String
    
                      Return cantidad + delimitador(0) + NombreElemento + delimitador(0) + Precio
                End Function
    End Class
    
    
    
    
    Public Class OrdernarTotal
    
                Public delimitador() As Char = "   "
    
                Public Sub OrdernarTotal(ByVal delimit As Char)
    
                    Dim delimitador As Char = delimit
                End Sub
    
                Public Function ObtenerTotalNombre(ByVal totalItem As String) As String
    
                      Dim delimitado() As String = totalItem.Split(delimitador)
                      Return delimitado(0)
    
                End Function
                Public Function ObtenerTotalCantidad(ByVal totalItem As String) As String
    
                      Dim delimitado() As String = totalItem.Split(delimitador)
                      Return delimitado(1)
                End Function
    
                Public Function GenerarTotal(ByVal totalName As String, ByVal price As String) As String
    
                      GenerarTotal = totalName + delimitador(0) + price
                End Function
    
    End Class
    
    
    
    
    '//////////////////////////////////////////////////
    
    
    
    Public Class Form1
    
    
    
    
    
    
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim a As ticket = New ticket
    'a.HeaderImage = "C:\Documents and Settings\Administrador\Mis documentos\COMPU.jpg"
    
    a.AnadirLineaCabeza("STARBUCKS COFFEE TAMAULIPAS")
    a.AnadirLineaCabeza("EXPEDIDO EN:")
    a.AnadirLineaCabeza("AV. TAMAULIPAS NO. 5 LOC. 101")
    a.AnadirLineaCabeza("MEXICO, DISTRITO FEDERAL")
    a.AnadirLineaCabeza("RFC: CSI-020226-MV4")
    
    'El metodo AddSubHeaderLine es lo mismo al de AddHeaderLine con la diferencia
    'de que al final de cada linea agrega una linea punteada "=========="
    a.AnadirLineaSubcabeza("Caja # 1 - Ticket # 1")
    a.AnadirLineaSubcabeza("Le atendió: Prueba")
    a.AnadirLineaSubcabeza(DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString())
    
    'El metodo AddItem requeire 3 parametros, el primero es cantidad, el segundo es la descripcion
    'del producto y el tercero es el precio)
    a.AnadirElemento("1", "Articulo Prueba", "15.00")
    a.AnadirElemento("2", "Articulo Prueba", "25.00")
    
    'El metodo AddTotal requiere 2 parametros, la descripcion del total, y el precio
    a.AnadirTotal("SUBTOTAL", "29.75")
    a.AnadirTotal("IVA", "5.25")
    a.AnadirTotal("TOTAL", "35.00")
    a.AnadirTotal("", "" ' //Ponemos un total en blanco que sirve de espacio
    a.AnadirTotal("RECIBIDO", "50.00")
    a.AnadirTotal("CAMBIO", "15.00")
    a.AnadirTotal("", "" '/Ponemos un total en blanco que sirve de espacio
    a.AnadirTotal("USTED AHORRO", "0.00")
    
    
    '//El metodo AddFooterLine funciona igual que la cabecera
    a.AnadeLineaAlPie("EL CAFE ES NUESTRA PASION..."
    a.AnadeLineaAlPie("VIVE LA EXPERIENCIA EN STARBUCKS"
    a.AnadeLineaAlPie("GRACIAS POR TU VISITA"
    
    '//Y por ultimo llamamos al metodo PrintTicket para imprimir el ticket, este metodo necesita un
    '//parametro de tipo string que debe de ser el nombre de la impresora.
    a.ImprimeTicket("SWF Printer")
    
    
    
    
    
    
    
    
    End Sub
    End Class

  3. #3
    Fecha de ingreso
    14 dic, 08
    Ubicación
    Veracruz
    Mensajes
    86

    Predeterminado

    Muchas gracias amigo, haré la prueba haber si me funciona, yo te comento el resultado, de antemano muchas gracias por tu ayuda y tiempo... Gracias
    Nadamas una duda como lo agrego, es que soy un principiante en esto...

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •  
Dale LIKE!
Síguenos