Respuesta: Solo imprimir una parte 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
fx = e
Dibujatitulo()
DibujaLaCabecera()
DibujaLaSubCabecera()
DibujaElementos()
DibujaTotales()
DibujarPieDePagina()
End Sub
Private Function Renglon() As Double
Return MargenSuperior + (contador * FuenteImpresa.GetHeight(gfx) + imageHeight)
End Function
Private Sub Dibujatitulo()
For Each Cabecera As String In LineasDeLatitulo
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, FuenteImpresa2, ColorDeLaFuente, MargenIzquierdo, Renglon(), New StringFormat())
contador += 1
End If
Next Cabecera
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 > 60)
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 > 50)
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 Descripción Valor", 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
''áqui se le cambia el margen
gfx.DrawString(CadenaPorEscribirEnLinea, FuenteImpresa, ColorDeLaFuente, 27, Renglon(), New StringFormat())
Dim Nombre As String = OrdenElemento.ObtenerNombreElemento(Elemento)
MargenIzquierdo = 0
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 = 1
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.Len gth) + CadenaPorEscribirEnLinea
gfx.DrawString(CadenaPorEscribirEnLinea, FuenteImpresa, ColorDeLaFuente, MargenIzquierdo, Renglon(), New StringFormat())
MargenIzquierdo = 1
CadenaPorEscribirEnLinea = " " + ordTot.ObtenerTotalNombre(total)
gfx.DrawString(CadenaPorEscribirEnLinea, FuenteImpresa, ColorDeLaFuente, MargenIzquierdo, Renglon(), New StringFormat())
contador += 1
Next total
MargenIzquierdo = 10
DibujaEspacio()
DibujaEspacio()
End Sub |