Stop printing with PrintDocument EN VB.NET

0

hello very good I tell you that I'm printing a ticket with print document, the ticket prints it well except that follows followed by very long blank space at the bottom which wastes a lot of paper, I do not know if there is any command to stop just finish the ticket here I leave the code thank you very much for your cooperation.

 Dim fuente As System.Drawing.Font = New Font("consolas", 15)
    Dim topMargin As Double = e.MarginBounds.Top
    Dim yPos As Double = 0
    Dim count As Integer = 0
    Dim texto As String = ""
    Dim unidad As Byte = 0
    Dim detalle As String = ""
    Dim valor As Decimal = 0
    Dim tabulacion As String = ""
    Dim compensador As Integer = 0
    Dim total As Decimal = 0


    Dim ds As New DataSet
    Dim dt As New DataTable
    '  Dim dr As DataRow

    Dim campito As String


    campito = "id"
    Dim strsql As String = "select id,impresora,representante,establecimiento,direccion,telefono,nit,mensaje,regimen,resolucion from mi_factura where " & campito & " like '" & "" & "%" & "'"

    Dim adp As New MySqlDataAdapter(strsql, conn)

    ds.Tables.Add("mi_factura")
    adp.Fill(ds.Tables("mi_factura"))

    Dim establecimiento As String
    Dim direccion As String
    Dim telefono As String
    Dim nit As String
    Dim mensaje As String
    Dim impresora As String



    establecimiento = ds.Tables("mi_factura").Rows(0).Item("establecimiento").ToString
    direccion = ds.Tables("mi_factura").Rows(0).Item("direccion").ToString
    telefono = ds.Tables("mi_factura").Rows(0).Item("telefono").ToString
    nit = ds.Tables("mi_factura").Rows(0).Item("nit").ToString
    mensaje = ds.Tables("mi_factura").Rows(0).Item("mensaje").ToString
    impresora = ds.Tables("mi_factura").Rows(0).Item("impresora").ToString()
    representante = ds.Tables("mi_factura").Rows(0).Item("representante").ToString()


    ' Imprime la cabecera
    yPos = 40
    Dim printFont As System.Drawing.Font = New Font("consolas", 12)
    e.Graphics.DrawString(establecimiento, fuente, Brushes.Black, 80, 40)
    e.Graphics.DrawString(direccion, printFont, Brushes.Black, 80, 60)
    e.Graphics.DrawString(nit, printFont, Brushes.Black, 80, 80)
    ''  e.Graphics.DrawString("Tiket N. " & Me.Numerotiket.Text, printFont, Brushes.Black, 10, 100)
    e.Graphics.DrawString("Fecha: " & Date.Now, printFont, Brushes.Black, 10, 120)
    '' e.Graphics.DrawString("Mesa N. " & NumeroMesa.Text, printFont, Brushes.Black, 10, 160)
    e.Graphics.DrawString("****************************", printFont, Brushes.Black, 10, 180)

    Dim cant As String
    Dim desc As String
    Dim imp As String
    Dim i As Integer

    Dim dst As New DataSet
    Dim dtp As New DataTable
    Dim camp As String

    camp = "mesa"

    'Dim adpt As New MySqlDataAdapter("select * from  tikets", conn)

    Dim adpT As New MySqlDataAdapter("select * from pedidofin where " & camp & " like '" & VENTAS.ComboBox2.Text & "'", conn)

    dst.Tables.Add("pedidofin")
    adpT.Fill(dst.Tables("pedidofin"))


    ''''''''''''''''''''''
    e.Graphics.DrawString("CNT       ITEM          IMPO ", printFont, System.Drawing.Brushes.Black, 10, 200)
    For i = 1 To adpT.Fill(dst.Tables("pedidofin"))
        Cant = dst.Tables("pedidofin").Rows(i).Item("cnt").ToString
        desc = dst.Tables("pedidofin").Rows(i).Item("item").ToString
        imp = dst.Tables("pedidofin").Rows(i).Item("precio").ToString
        ' Cant = Cant + "  "

        texto = cant & "  " & desc & "  " & imp
        yPos = 120 + topMargin + (count * printFont.GetHeight(e.Graphics)) ' Calcula la posición en la que se escribe la línea
        ' Imprime la línea con el objeto Graphics

        e.Graphics.DrawString(texto, printFont, System.Drawing.Brushes.Black, 10, yPos)
        total += valor

        count += 1

    Next



    yPos += 10
    e.Graphics.DrawString("____________________________", printFont, System.Drawing.Brushes.Black, 10, yPos)
    Dim tot As Integer = 0
    tot = Len(TextBox1.Text)
    '' lineaTotal = StrDup(28 - XXX, ".")
    yPos += 20
    e.Graphics.DrawString("Total " & tot & total, printFont, System.Drawing.Brushes.Black, 10, yPos)
    yPos += 30
    e.Graphics.DrawString("****************************", printFont, System.Drawing.Brushes.Black, 10, yPos)
    yPos += 30
    e.Graphics.DrawString("gracias por su compra", printFont, System.Drawing.Brushes.Black, 10, yPos)
    '' e.Graphics.DrawString(Me.Preferenciabindingdource.Current("Coletilla"), printFont, Brushes.Black, 10, yPos + 20)
    ''e.Graphics.DrawString("---------------------------------", printFont, Brushes.Black, 10, 180)
    '' e.Graphics.DrawString("Gracias por su compra!", printFont, Brushes.Black, 10, 180)
    e.HasMorePages = False
    
asked by juan perez 03.08.2018 в 19:24
source

1 answer

0

Test setting a fixed size to the page can work.

  

link

Dim PrintDocument1 As PrintDocument = New PrintDocument()
Dim pkCustomSize1 As New PaperSize("Custom Paper Size", 100, 200)
PrintDocument1.PrinterSettings.DefaultPageSettings.PaperSize = pkCustomSize1
    
answered by 03.08.2018 в 19:34