Re: Imprimir con coordenadas Cierto jhonwilliams -y gracias de nuevo-, la clase graphics me permite ubicar texto en la posicion q quiera (supongo q el brushes."color", me permite determinar el color de la fuente). Hice lo sgte:
Private Sub imprimirCheque(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) _
Handles docImprimir.PrintPage
...variables de conexion
Dim ds as DataSet
Dim fecha, valor, orden, suma, suma1 As String
Dim fechaCoor() As String
Dim valorCoor() As String
Dim ordenCoor() As String
Dim sumaCoor() As String
Dim suma1Coor() As String
Dim coorFechaY, coorFechaX As Integer
Dim coorValorY, coorValorX As Integer
Dim coorOrdenY, coorOrdenX As Integer
Dim coorSumaY, coorSumaX As Integer
Dim coorSuma1Y, coorSuma1X As Integer
Dim VlrCheque, VlrFecha, Aquien As String
Dim vlrLetras, vlrLetras1, vlrLetras2 As String
cnxDB = New clsConexion
Try
...set de la conexion
'' Iniciar la transaccion
''OBTENER LAS COORDENADAS
....consulta para obtener las coordenadas especificadas para los vlrs.
fecha = CStr(ds.Tables(0).Rows(0)("fecha"))
valor = CStr(ds.Tables(0).Rows(0)("valor"))
orden = CStr(ds.Tables(0).Rows(0)("orden"))
suma = CStr(ds.Tables(0).Rows(0)("suma"))
suma1 = CStr(ds.Tables(0).Rows(0)("suma1"))
''Valores
VlrCheque = CStr(Me.txtValor.Text)
VlrFecha = CStr(Me.dtpFechaOrden.Value)
Aquien = CStr(Me.txtNomTer.Text)
''Proceso para la impresion del cheque
''Inserto al vector los valores de las coordenadas - FECHA
fechaCoor = fecha.Split(",")
coorFechaY = CInt(fechaCoor(0)) ''valor de la coordenada Y
coorFechaX = CInt(fechaCoor(1)) ''valor de la coordenada X
''Inserto al vector los valores de las coordenadas - VALOR
valorCoor = valor.Split(",")
coorValorY = CInt(valorCoor(0)) ''valor de la coordenada Y
coorValorX = CInt(valorCoor(1)) ''valor de la coordenada X
''Inserto al vector los valores de las coordenadas - ORDEN (a quien)
ordenCoor = valor.Split(",")
coorOrdenY = CInt(ordenCoor(0)) ''valor de la coordenada Y
coorOrdenX = CInt(ordenCoor(1)) ''valor de la coordenada X
''Inserto al vector los valores de las coordenadas - SUMA (vlr en letras)
sumaCoor = suma.Split(",")
coorSumaY = CInt(sumaCoor(0))
coorSumaX = CInt(sumaCoor(1))
''Inserto al vector los valores de las coordenadas - SUMA 1 (vlr en letras 1)
suma1Coor = suma.Split(",")
coorSuma1Y = CInt(suma1Coor(0))
coorSuma1X = CInt(suma1Coor(1))
e.Graphics.DrawString(VlrFecha, Font, Brushes.Black, coorFechaX, coorFechaY) ''Escribo en el cheque la fecha
e.Graphics.DrawString(VlrCheque, Font, Brushes.Black, coorValorX, coorValorY) ''Escribo en el cheque el valor
e.Graphics.DrawString(Aquien, Font, Brushes.Black, coorOrdenX, coorOrdenY) ''Escribo en el cheque a quien va
''valor a letras
Dim cUtilidad As New clsUtilidad
vlrLetras = VlrCheque
Dim aletras As New clsUtilidad
vlrLetras = aletras.Letras
If vlrLetras.Length >= 75 Then ''si el valor en letras es > 75 caracteres divido la cadena
vlrLetras1 = Mid(vlrLetras, 0, 75) ''los 75 primeros
vlrLetras2 = Mid(vlrLetras, 76, vlrLetras.Length) ''los siguientes
e.Graphics.DrawString(vlrLetras1, Font, Brushes.Black, coorSumaX, coorSumaY) ''Escribo en el cheque valor en letras
e.Graphics.DrawString(vlrLetras2, Font, Brushes.Black, coorSuma1X, coorSuma1Y) ''Escribo en el cheque valor en letras
Else
e.Graphics.DrawString(vlrLetras, Font, Brushes.Black, coorSumaX, coorSumaY) ''Escribo en el cheque valor en letras
End If
' No hay mas hojas por imprimir.
'El procedimiento no se vuelve a ejecutar
e.HasMorePages = False
Catch ex As System.Exception
Dim baserrores As New basErroresv100
baserrores.txtModulo.Text = Me.Name
baserrores.txtError.Text = "error imprimiendo cheque."
baserrores.txtDetalle.Text = ex.Message
baserrores.ShowDialog()
Me.Close()
End Try
End Sub
Luego en el evento del boton para imprimir hago:
msg = MsgBox("¿Desea imprimir el cheque?", MsgBoxStyle.YesNo, "Imprimir Cheque")
If msg = MsgBoxResult.Yes Then
Dim DlgImp As New PrintDialog
Dim rta As DialogResult
DlgImp.Document = docImprimir
rta = DlgImp.ShowDialog
If rta = Windows.Forms.DialogResult.OK Then
docImprimir.Print() '''''''problema aqui*
End If
End if
Tuve q declarar antes una variable tipo PrintDocument:
Private WithEvents docImprimir As New PrintDocument
Pero ahora el problema es otro.....como de servicios o algo asi. Cuando el programa va en la linea -docImprimir.Print() '''''''problema aqui*- aparece un error q dice "El servidor RPC no esta disponible"; aun estoy buscando la solucion para probar del todo la impresion del cheque. Pero en general creo esa seria la solucion....solo falta la prueba final! |