Autor Tema: Ayuda Impresión con Print Document  (Leído 4958 veces)

0 Usuarios y 1 Visitante están viendo este tema.

wolf_kof

  • Visitante
Ayuda Impresión con Print Document
« en: Marzo 20, 2014, 04:09:38 pm »
Señores buenas tardes, quisiera que me orientaran para poder desenmarañar este problemita que tengo, quiero hacer la impresión de Ticket o Factura con una impresora de Ticket pero quiero centrar bien y hacer bien las cosas, el problema es que tengo estos códigos y no se si son los correctos para hacer esto. Necesito orientación Gracias.


Perdon, el ancho del papel es de 7.5 centimetros.

Código: (vb) [Seleccionar]
Imports Microsoft.VisualBasic
Imports System
Imports System.Windows.Forms
Imports System.Drawing
Imports System.Drawing.Printing

Public Class Form1
    Private prtDoc As PrintDocument

    Private Sub imprimir()
        If prtDoc Is Nothing Then
            prtDoc = New PrintDocument
            AddHandler prtDoc.PrintPage, AddressOf prt_PrintPage
        End If
        PrintPreviewControl1.Document = prtDoc
        PrintPreviewControl1.Refresh()
    End Sub

    Private Sub prt_PrintPage(ByVal sender As Object, _
                          ByVal e As PrintPageEventArgs)

        e.PageSettings.Margins.Right = 19
        e.PageSettings.Margins.Left = 19
        Dim fontTitulo As New Font("Arial", 11, FontStyle.Bold)
        Dim fontEncabezado As New Font("Arial", 9, FontStyle.Bold)
        Dim fontCuerpo As New Font("Arial", 9, FontStyle.Regular)
        Dim fontPie As New Font("Arial", 10, FontStyle.Bold)
        Dim xPoint As New Point
        Dim xSize As New Size(190, 15)
        Dim FormatoCentro As New StringFormat
        FormatoCentro.Alignment = StringAlignment.Center
        Dim FormatoIzquierda As New StringFormat
        FormatoIzquierda.Alignment = StringAlignment.Far
        Dim FormatoDerecha As New StringFormat
        FormatoDerecha.Alignment = StringAlignment.Near
        Dim Renglon1 As New Rectangle(New Point(0, 0), New Size(190, 15))
        Dim Renglon2 As New Rectangle(New Point(0, 15), New Size(190, 15))
        Dim Renglon3 As New Rectangle(New Point(0, 30), New Size(190, 15))

        e.Graphics.DrawString("DICO S.A.", fontTitulo, Brushes.Black, Renglon1, FormatoCentro)
        e.Graphics.DrawRectangle(Pens.Black, Renglon1)
        e.Graphics.DrawString("Finca el Oasis, La Fragua", fontEncabezado, Brushes.Black, Renglon2, FormatoIzquierda)
        e.Graphics.DrawRectangle(Pens.Black, Renglon2)
        'For n As Integer = 0 To 10
        '    xPoint.Y = 50 + (n * 15)
        '    Renglon3 = New Rectangle(xPoint, xSize)
        '    e.Graphics.DrawString("Item " & n, fontCuerpo, Brushes.Black, vRectangulo, FormatoIzquierda)
        'Next

    End Sub


    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        imprimir()
    End Sub
End Class

wolf_kof

  • Visitante
Re:Ayuda Impresión con Print Document
« Respuesta #1 en: Marzo 21, 2014, 09:08:55 pm »
Amigos buenas tardes ya tengo casi solucionado este temita, el código:

Código: (vb) [Seleccionar]
    Private Sub GenerarFactura(ByVal IdFactura As Integer, ByVal CantLineas As Integer)
        Factura.DocumentName = "FAC" & IdFactura
        Dim Alto As Integer = 390 + (CantLineas * 15)
        Dim Tamaño As New Printing.PaperSize("Factura", 291, Alto)
        Factura.DefaultPageSettings.PaperSize = Tamaño
        Factura.PrinterSettings.DefaultPageSettings.Margins.Top = 10
        Factura.PrinterSettings.DefaultPageSettings.Margins.Bottom = 5
        Factura.PrinterSettings.DefaultPageSettings.Margins.Left = 5
        Factura.PrinterSettings.DefaultPageSettings.Margins.Right = 5

        AddHandler Factura.PrintPage, AddressOf prt_PrintPage

        Factura.Print()
    End Sub

    Private Sub prt_PrintPage(ByVal sender As Object, ByVal e As PrintPageEventArgs)

        Dim fontTitulo As New Font("Arial", 14, FontStyle.Bold)
        Dim fontEncabezado As New Font("Arial", 9, FontStyle.Regular)
        Dim fontCuerpo As New Font("Arial", 8, FontStyle.Regular)
        Dim fontTituloColumna As New Font("Arial", 8, FontStyle.Bold)

        Dim FormatoCentro As New StringFormat
        FormatoCentro.Alignment = StringAlignment.Center
        FormatoCentro.LineAlignment = StringAlignment.Center
        Dim FormatoIzquierda As New StringFormat()
        FormatoIzquierda.Alignment = StringAlignment.Near
        FormatoIzquierda.LineAlignment = StringAlignment.Center
        Dim FormatoDerecha As New StringFormat()
        FormatoDerecha.Alignment = StringAlignment.Far
        FormatoDerecha.LineAlignment = StringAlignment.Center

        Dim Parrafo As Rectangle
        Parrafo = New Rectangle(0, 5, 291, 16)
        e.Graphics.DrawString("DICO S.A.", fontTitulo, Brushes.Black, Parrafo, FormatoCentro)
        Parrafo = New Rectangle(0, 20, 291, 12)
        e.Graphics.DrawString("Distribuidora y Comercializadora", fontEncabezado, Brushes.Black, Parrafo, FormatoCentro)
        Parrafo = New Rectangle(0, 35, 291, 12)
        e.Graphics.DrawString("de Oriente S.A.", fontEncabezado, Brushes.Black, Parrafo, FormatoCentro)
        Parrafo = New Rectangle(0, 50, 291, 12)
        e.Graphics.DrawString("Finca El Oasis, La Fragua, Zacapa", fontEncabezado, Brushes.Black, Parrafo, FormatoCentro)
        Parrafo = New Rectangle(0, 65, 291, 12)
        e.Graphics.DrawString("Nit: 8027636-9", fontEncabezado, Brushes.Black, Parrafo, FormatoCentro)
        Parrafo = New Rectangle(0, 80, 291, 12)
        e.Graphics.DrawString("Tel: 50168594", fontEncabezado, Brushes.Black, Parrafo, FormatoCentro)

        Parrafo = New Rectangle(0, 105, 291, 12)
        e.Graphics.DrawString("RES:2007-1-28-18731", fontCuerpo, Brushes.Black, Parrafo, FormatoCentro)
        Parrafo = New Rectangle(0, 120, 291, 12)
        e.Graphics.DrawString("DE FECHA: 21/03/2014", fontCuerpo, Brushes.Black, Parrafo, FormatoCentro)
        Parrafo = New Rectangle(0, 135, 291, 12)
        e.Graphics.DrawString("VALE", fontCuerpo, Brushes.Black, Parrafo, FormatoCentro)
        Parrafo = New Rectangle(0, 150, 291, 12)
        e.Graphics.DrawString("SERIE: " & vSerie & " NO. " & vIdVenta, fontCuerpo, Brushes.Black, Parrafo, FormatoCentro)
        Parrafo = New Rectangle(0, 165, 291, 12)
        e.Graphics.DrawString("FECHA EMISION: " & lblFecha.Text, fontCuerpo, Brushes.Black, Parrafo, FormatoCentro)

        Parrafo = New Rectangle(0, 190, 291, 12)
        e.Graphics.DrawString("CODIGO: " & FrmPDV.txtCodigo.Text, fontCuerpo, Brushes.Black, Parrafo, FormatoIzquierda)
        Parrafo = New Rectangle(0, 205, 291, 12)
        e.Graphics.DrawString("NIT: " & FrmPDV.lblNit.Text, fontCuerpo, Brushes.Black, Parrafo, FormatoIzquierda)
        Parrafo = New Rectangle(0, 220, 291, 12)
        e.Graphics.DrawString("NOMBRE:", fontCuerpo, Brushes.Black, Parrafo, FormatoIzquierda)
        Parrafo = New Rectangle(0, 235, 291, 12)
        e.Graphics.DrawString(FrmPDV.lblNombre.Text, fontCuerpo, Brushes.Black, Parrafo, FormatoIzquierda)

        Parrafo = New Rectangle(0, 260, 50, 15)
        e.Graphics.DrawString("CANT.", fontTituloColumna, Brushes.Black, Parrafo, FormatoCentro)
        Parrafo = New Rectangle(50, 260, 175, 15)
        e.Graphics.DrawString("DESCRIPCION", fontTituloColumna, Brushes.Black, Parrafo, FormatoIzquierda)
        Parrafo = New Rectangle(225, 260, 50, 15)
        e.Graphics.DrawString("COSTO", fontTituloColumna, Brushes.Black, Parrafo, FormatoDerecha)

        Dim Linea As Integer = 275

        Dim CantLinea As Integer = 0
        For n As Integer = 0 To FrmPDV.ListView1.Items.Count - 1
            Parrafo = New Rectangle(0, Linea + (n * 15), 50, 12)
            e.Graphics.DrawString(FrmPDV.ListView1.Items(n).SubItems(1).Text, fontCuerpo, Brushes.Black, Parrafo, FormatoCentro)
            Parrafo = New Rectangle(50, Linea + (n * 15), 175, 12)
            e.Graphics.DrawString(FrmPDV.ListView1.Items(n).SubItems(2).Text, fontCuerpo, Brushes.Black, Parrafo, FormatoIzquierda)
            Parrafo = New Rectangle(225, Linea + (n * 15), 50, 12)
            e.Graphics.DrawString(FormatNumber(FrmPDV.ListView1.Items(n).SubItems(4).Text), fontCuerpo, Brushes.Black, Parrafo, FormatoDerecha)
            CantLinea = (n * 15)
        Next

        Linea += CantLinea + 10
        Parrafo = New Rectangle(225, Linea, 50, 12)
        e.Graphics.DrawString("---------------", fontCuerpo, Brushes.Black, Parrafo, FormatoDerecha)
        Linea += 10
        Parrafo = New Rectangle(50, Linea, 175, 15)
        e.Graphics.DrawString("TOTAL", fontTituloColumna, Brushes.Black, Parrafo, FormatoIzquierda)
        Parrafo = New Rectangle(225, Linea, 50, 12)
        e.Graphics.DrawString(lblMonto.Text, fontCuerpo, Brushes.Black, Parrafo, FormatoDerecha)
        Linea += 15
        Parrafo = New Rectangle(50, Linea, 175, 15)
        e.Graphics.DrawString("EFECTIVO", fontTituloColumna, Brushes.Black, Parrafo, FormatoIzquierda)
        Parrafo = New Rectangle(225, Linea, 50, 12)
        e.Graphics.DrawString(txtPago.Text, fontCuerpo, Brushes.Black, Parrafo, FormatoDerecha)
        Linea += 15
        Parrafo = New Rectangle(50, Linea, 175, 15)
        e.Graphics.DrawString("VUELTO", fontTituloColumna, Brushes.Black, Parrafo, FormatoIzquierda)
        Parrafo = New Rectangle(225, Linea, 50, 12)
        e.Graphics.DrawString(lblVuelto.Text, fontCuerpo, Brushes.Black, Parrafo, FormatoDerecha)

        Linea += 50
        Parrafo = New Rectangle(0, Linea, 291, 12)
        e.Graphics.DrawString("- - - - - SUJETO A PAGOS TRIMESTRALES - - - - -", fontCuerpo, Brushes.Black, Parrafo, FormatoCentro)
        Linea += 15
        Parrafo = New Rectangle(0, Linea, 291, 12)
        e.Graphics.DrawString("GRACIAS POR SU COMPRA, VUELVA PRONTO", fontCuerpo, Brushes.Black, Parrafo, FormatoCentro)
        e.HasMorePages = False
    End Sub


La Ticket me queda rebien, el problema es que ahora me imprime varios documentos en ves de solo uno, igual necesito ayuda si alguien puede hecharme la mano muy agradecido.

hjlinarez

  • Bit
  • Mensajes: 1
  • Reputación: +0/-0
    • Ver Perfil
Re:Ayuda Impresión con Print Document
« Respuesta #2 en: Mayo 20, 2014, 08:42:15 am »
Hola, disculpa que te responda con una pregunta pero al imprimir el ticket te sale completo por que a mi no me imprime la ultima linea y me la deja para el siguiente ticket...

wolf_kof

  • Visitante
Re:Ayuda Impresión con Print Document
« Respuesta #3 en: Mayo 21, 2014, 09:34:33 pm »
Ese es problema de largo del papel, dale unos cms mas y veras.

alturito51@gmail.com

  • Bit
  • Mensajes: 1
  • Reputación: +0/-0
    • Ver Perfil
Re:Ayuda Impresión con Print Document
« Respuesta #4 en: Abril 05, 2015, 06:41:01 pm »
Amigos buenas tardes ya tengo casi solucionado este temita, el código:

Código: (vb) [Seleccionar]
    Private Sub GenerarFactura(ByVal IdFactura As Integer, ByVal CantLineas As Integer)
        Factura.DocumentName = "FAC" & IdFactura
        Dim Alto As Integer = 390 + (CantLineas * 15)
        Dim Tamaño As New Printing.PaperSize("Factura", 291, Alto)
        Factura.DefaultPageSettings.PaperSize = Tamaño
        Factura.PrinterSettings.DefaultPageSettings.Margins.Top = 10
        Factura.PrinterSettings.DefaultPageSettings.Margins.Bottom = 5
        Factura.PrinterSettings.DefaultPageSettings.Margins.Left = 5
        Factura.PrinterSettings.DefaultPageSettings.Margins.Right = 5

        AddHandler Factura.PrintPage, AddressOf prt_PrintPage

        Factura.Print()
    End Sub

    Private Sub prt_PrintPage(ByVal sender As Object, ByVal e As PrintPageEventArgs)

        Dim fontTitulo As New Font("Arial", 14, FontStyle.Bold)
        Dim fontEncabezado As New Font("Arial", 9, FontStyle.Regular)
        Dim fontCuerpo As New Font("Arial", 8, FontStyle.Regular)
        Dim fontTituloColumna As New Font("Arial", 8, FontStyle.Bold)

        Dim FormatoCentro As New StringFormat
        FormatoCentro.Alignment = StringAlignment.Center
        FormatoCentro.LineAlignment = StringAlignment.Center
        Dim FormatoIzquierda As New StringFormat()
        FormatoIzquierda.Alignment = StringAlignment.Near
        FormatoIzquierda.LineAlignment = StringAlignment.Center
        Dim FormatoDerecha As New StringFormat()
        FormatoDerecha.Alignment = StringAlignment.Far
        FormatoDerecha.LineAlignment = StringAlignment.Center

        Dim Parrafo As Rectangle
        Parrafo = New Rectangle(0, 5, 291, 16)
        e.Graphics.DrawString("DICO S.A.", fontTitulo, Brushes.Black, Parrafo, FormatoCentro)
        Parrafo = New Rectangle(0, 20, 291, 12)
        e.Graphics.DrawString("Distribuidora y Comercializadora", fontEncabezado, Brushes.Black, Parrafo, FormatoCentro)
        Parrafo = New Rectangle(0, 35, 291, 12)
        e.Graphics.DrawString("de Oriente S.A.", fontEncabezado, Brushes.Black, Parrafo, FormatoCentro)
        Parrafo = New Rectangle(0, 50, 291, 12)
        e.Graphics.DrawString("Finca El Oasis, La Fragua, Zacapa", fontEncabezado, Brushes.Black, Parrafo, FormatoCentro)
        Parrafo = New Rectangle(0, 65, 291, 12)
        e.Graphics.DrawString("Nit: 8027636-9", fontEncabezado, Brushes.Black, Parrafo, FormatoCentro)
        Parrafo = New Rectangle(0, 80, 291, 12)
        e.Graphics.DrawString("Tel: 50168594", fontEncabezado, Brushes.Black, Parrafo, FormatoCentro)

        Parrafo = New Rectangle(0, 105, 291, 12)
        e.Graphics.DrawString("RES:2007-1-28-18731", fontCuerpo, Brushes.Black, Parrafo, FormatoCentro)
        Parrafo = New Rectangle(0, 120, 291, 12)
        e.Graphics.DrawString("DE FECHA: 21/03/2014", fontCuerpo, Brushes.Black, Parrafo, FormatoCentro)
        Parrafo = New Rectangle(0, 135, 291, 12)
        e.Graphics.DrawString("VALE", fontCuerpo, Brushes.Black, Parrafo, FormatoCentro)
        Parrafo = New Rectangle(0, 150, 291, 12)
        e.Graphics.DrawString("SERIE: " & vSerie & " NO. " & vIdVenta, fontCuerpo, Brushes.Black, Parrafo, FormatoCentro)
        Parrafo = New Rectangle(0, 165, 291, 12)
        e.Graphics.DrawString("FECHA EMISION: " & lblFecha.Text, fontCuerpo, Brushes.Black, Parrafo, FormatoCentro)

        Parrafo = New Rectangle(0, 190, 291, 12)
        e.Graphics.DrawString("CODIGO: " & FrmPDV.txtCodigo.Text, fontCuerpo, Brushes.Black, Parrafo, FormatoIzquierda)
        Parrafo = New Rectangle(0, 205, 291, 12)
        e.Graphics.DrawString("NIT: " & FrmPDV.lblNit.Text, fontCuerpo, Brushes.Black, Parrafo, FormatoIzquierda)
        Parrafo = New Rectangle(0, 220, 291, 12)
        e.Graphics.DrawString("NOMBRE:", fontCuerpo, Brushes.Black, Parrafo, FormatoIzquierda)
        Parrafo = New Rectangle(0, 235, 291, 12)
        e.Graphics.DrawString(FrmPDV.lblNombre.Text, fontCuerpo, Brushes.Black, Parrafo, FormatoIzquierda)

        Parrafo = New Rectangle(0, 260, 50, 15)
        e.Graphics.DrawString("CANT.", fontTituloColumna, Brushes.Black, Parrafo, FormatoCentro)
        Parrafo = New Rectangle(50, 260, 175, 15)
        e.Graphics.DrawString("DESCRIPCION", fontTituloColumna, Brushes.Black, Parrafo, FormatoIzquierda)
        Parrafo = New Rectangle(225, 260, 50, 15)
        e.Graphics.DrawString("COSTO", fontTituloColumna, Brushes.Black, Parrafo, FormatoDerecha)

        Dim Linea As Integer = 275

        Dim CantLinea As Integer = 0
        For n As Integer = 0 To FrmPDV.ListView1.Items.Count - 1
            Parrafo = New Rectangle(0, Linea + (n * 15), 50, 12)
            e.Graphics.DrawString(FrmPDV.ListView1.Items(n).SubItems(1).Text, fontCuerpo, Brushes.Black, Parrafo, FormatoCentro)
            Parrafo = New Rectangle(50, Linea + (n * 15), 175, 12)
            e.Graphics.DrawString(FrmPDV.ListView1.Items(n).SubItems(2).Text, fontCuerpo, Brushes.Black, Parrafo, FormatoIzquierda)
            Parrafo = New Rectangle(225, Linea + (n * 15), 50, 12)
            e.Graphics.DrawString(FormatNumber(FrmPDV.ListView1.Items(n).SubItems(4).Text), fontCuerpo, Brushes.Black, Parrafo, FormatoDerecha)
            CantLinea = (n * 15)
        Next

        Linea += CantLinea + 10
        Parrafo = New Rectangle(225, Linea, 50, 12)
        e.Graphics.DrawString("---------------", fontCuerpo, Brushes.Black, Parrafo, FormatoDerecha)
        Linea += 10
        Parrafo = New Rectangle(50, Linea, 175, 15)
        e.Graphics.DrawString("TOTAL", fontTituloColumna, Brushes.Black, Parrafo, FormatoIzquierda)
        Parrafo = New Rectangle(225, Linea, 50, 12)
        e.Graphics.DrawString(lblMonto.Text, fontCuerpo, Brushes.Black, Parrafo, FormatoDerecha)
        Linea += 15
        Parrafo = New Rectangle(50, Linea, 175, 15)
        e.Graphics.DrawString("EFECTIVO", fontTituloColumna, Brushes.Black, Parrafo, FormatoIzquierda)
        Parrafo = New Rectangle(225, Linea, 50, 12)
        e.Graphics.DrawString(txtPago.Text, fontCuerpo, Brushes.Black, Parrafo, FormatoDerecha)
        Linea += 15
        Parrafo = New Rectangle(50, Linea, 175, 15)
        e.Graphics.DrawString("VUELTO", fontTituloColumna, Brushes.Black, Parrafo, FormatoIzquierda)
        Parrafo = New Rectangle(225, Linea, 50, 12)
        e.Graphics.DrawString(lblVuelto.Text, fontCuerpo, Brushes.Black, Parrafo, FormatoDerecha)

        Linea += 50
        Parrafo = New Rectangle(0, Linea, 291, 12)
        e.Graphics.DrawString("- - - - - SUJETO A PAGOS TRIMESTRALES - - - - -", fontCuerpo, Brushes.Black, Parrafo, FormatoCentro)
        Linea += 15
        Parrafo = New Rectangle(0, Linea, 291, 12)
        e.Graphics.DrawString("GRACIAS POR SU COMPRA, VUELVA PRONTO", fontCuerpo, Brushes.Black, Parrafo, FormatoCentro)
        e.HasMorePages = False
    End Sub


La Ticket me queda rebien, el problema es que ahora me imprime varios documentos en ves de solo uno, igual necesito ayuda si alguien puede hecharme la mano muy agradecido.




hola mil disculpa, necesito tu ayuda, me gustaria saber si ya resolviste este problema? y si ya lo hiciste pues me ayude y me facilite

aedEric

  • Megabyte
  • ***
  • Mensajes: 211
  • Reputación: +20/-0
    • Ver Perfil
Re:Ayuda Impresión con Print Document
« Respuesta #5 en: Abril 05, 2015, 11:11:21 pm »
hola alturito51@gmail.com creo que  Abner(wolf_kof) tiene tiempo sin aparecer por este foro es mas ya no es forista, pero a lo mejor algun otro forista pueda apoyarte saludos 
No he fracasado. He encontrado 10000 soluciones que no funcionan.