Visual Basic.NET - PrintDocument - Salto de Pagina

   
Vista:

PrintDocument - Salto de Pagina

Publicado por hectorManu (3 intervenciones) el 25/06/2011 01:28:24
Hola que tal justamente logre correr esta aplicacion: aqui les dejo el ejemplo:

Private WithEvents printDoc As New PrintDocument()
Dim pagina As Integer = 1
Dim lineaActual As Integer = 0
'este codigo va dentro del evento printPage
Dim prFontD As New Font("Arial", 7)
Dim prFontB As New Font("Arial", 7, FontStyle.Bold)
Dim xPos As Integer = 30 ' COLUMNAS
Dim yPos As Integer = 80 ' FILAS
Dim lineHeight As Single
Dim pg As Integer = 0
Dim print = New FichaAD
lineHeight = prFontD.GetHeight(e.Graphics)

e.Graphics.DrawString("REPORTE DE PAGOS", prFontD, Brushes.Black, xPos, 40)

Dim fil As System.Data.DataTable = print.GetPrintFichaDate(Me.dtpInicio.Value, Me.dtpFinal.Value, Me.txtDNI.Text)

Do
yPos += lineHeight
e.Graphics.DrawString(fil.Rows(lineaActual).Item(0), prFontD, Brushes.Black, xPos, yPos)
e.Graphics.DrawString(fil.Rows(lineaActual).Item(1), prFontD, Brushes.Black, xPos + 95, yPos)
e.Graphics.DrawString(fil.Rows(lineaActual).Item(2), prFontD, Brushes.Black, xPos + 215, yPos)
e.Graphics.DrawString(fil.Rows(lineaActual).Item(3), prFontD, Brushes.Black, xPos + 290, yPos)
e.Graphics.DrawString("S/.", prFontD, Brushes.Black, xPos + 800, yPos)
e.Graphics.DrawString(fil.Rows(lineaActual).Item(4), prFontD, Brushes.Black, xPos + 830, yPos)
e.Graphics.DrawString(fil.Rows(lineaActual).Item(6), prFontD, Brushes.Black, xPos + 880, yPos)
e.Graphics.DrawString(fil.Rows(lineaActual).Item(7), prFontD, Brushes.Black, xPos + 930, yPos)
e.Graphics.DrawString(fil.Rows(lineaActual).Item(8), prFontD, Brushes.Black, xPos + 960, yPos)
lineaActual += 1
'Aqui realizo la compracion de filas en mi grid, pueden colocar datagrid.rowscount -1 en vez de flex_ficha.rows.count -1
Loop Until yPos >= e.MarginBounds.Bottom OrElse lineaActual >= flex_ficha.Rows.Count - 1


e.Graphics.DrawLine(Pens.Black, 30, 770, 1070, 770)
e.Graphics.DrawString("Pág.: " & pagina, prFontD, Brushes.Black, xPos, 780)
'aca comparo y realizo el salto de pagina
If lineaActual < flex_ficha.Rows.Count - 1 Then
e.HasMorePages = True
pagina += 1
Else
e.HasMorePages = False
End If
En esto tuve un problema al momento de imprimir, visulizaba todo el documento de forma normal pero cuando realizaba la impresion esta botaba en blanco asi que coloque esto dentro del evento de print document:
Private Sub printDoc_EndPrint(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintEventArgs) Handles printDoc.EndPrint
lineaActual = 0
pagina = 1
End Sub
Espero les pueda ayudar. saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder