Respuesta: Imprimir Ticket con Visual Basic 2005 ..........................
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.Len gth) + 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 |