Foros del Web » Programación para mayores de 30 ;) » .NET »

Imprimir con coordenadas

Estas en el tema de Imprimir con coordenadas en el foro de .NET en Foros del Web. Hola Quisiera q me ayudaran con esto: Tengo q imprimir un cheque y cada una de las cadenas de texto debe ir ubicada en cierta ...
  #1 (permalink)  
Antiguo 30/05/2007, 10:01
 
Fecha de Ingreso: mayo-2006
Mensajes: 110
Antigüedad: 18 años
Puntos: 0
Imprimir con coordenadas

Hola
Quisiera q me ayudaran con esto:
Tengo q imprimir un cheque y cada una de las cadenas de texto debe ir ubicada en cierta posicion. Tengo las coordenadas pero no se como usarlas con el Print. Encontre las propiedades CurrentX y CurrentY para usar coordenadas pero en VB6 y no se cual seria su equivalente para VB.net 2005

Gracias
  #2 (permalink)  
Antiguo 30/05/2007, 11:10
Avatar de jhonwilliams  
Fecha de Ingreso: marzo-2004
Ubicación: Copacabana - Colombia
Mensajes: 1.484
Antigüedad: 20 años, 2 meses
Puntos: 76
Re: Imprimir con coordenadas

Investiga la clase PrintDocument, creo que esa es la solucion a tu pregunta. Pero creo que un reporte en Crystal Tambien Podria ayudar.

Saludos
__________________
Si mi respuesta te ha ayudado, agradezco que me regales unos puntos de Karma XD.

"Una mujer sería encantadora si uno pudiera caer en sus brazos sin caer en sus manos." (Ambrose Bierce)
  #3 (permalink)  
Antiguo 30/05/2007, 11:32
 
Fecha de Ingreso: mayo-2006
Mensajes: 110
Antigüedad: 18 años
Puntos: 0
Re: Imprimir con coordenadas

Gracias por responder JhonWilliams. Ya revise esa clase y todas sus propiedades y no vi nada que me indicara posiciones de coordenadas.

¿es posible q no haya una forma de ubicar un texto en la posicion (coordenadas) que uno quiera!?
  #4 (permalink)  
Antiguo 31/05/2007, 07:23
Avatar de jhonwilliams  
Fecha de Ingreso: marzo-2004
Ubicación: Copacabana - Colombia
Mensajes: 1.484
Antigüedad: 20 años, 2 meses
Puntos: 76
Re: Imprimir con coordenadas

Sip, con el PrintDocument, estoy seguro que se hace con coordenadas, de lo contrario todo te saldria en la posicion 0,0 y te imaginas un cheque todo en la esquina izquierda? eso debe ser desastrozo, espera busco algo.....

buscando....

Insertas un objeto PrintDocument en el formulario y en el evento printDocument1_PrintPage puedes hacer algo como esto:

Código:
e.Graphics.DrawString("CODIGO DE PRODUCTO", fuenteTitulo, Brushes.Black, 10,100);//Titulo
"CODIGO DE PRODUCTO" = Texto que necesito que salga.

fuenteTitulo = Es una familia de fuentes, previamente tengo esta linea, donde indico fuente, tamaño, tipo, etc.

Código:
Font fuenteTitulo = new Font("Verdana",6,FontStyle.Regular);
Brushes.Black = Lo siento pero esta no recuerdo para que sirve, fijate en las sobrecargas haber que explicacion dan.

Y sigue lo que necesitas:

, 10,100) = Posicion X y Y donde comenzara a escribir el texto.

Recuerda hacer muchas pruebas para que estes seguro que saldra siempre donde debe ser, prueba con texto largo, etc. etc.

Se me ocurre que si la persona llena el cheque desde el programa podrias tenes en el backgroud del form una imagen de cheque asi dara la impresion de hacerlo directamente sobre el cheque.

Saludos
__________________
Si mi respuesta te ha ayudado, agradezco que me regales unos puntos de Karma XD.

"Una mujer sería encantadora si uno pudiera caer en sus brazos sin caer en sus manos." (Ambrose Bierce)
  #5 (permalink)  
Antiguo 31/05/2007, 08:21
 
Fecha de Ingreso: mayo-2006
Mensajes: 110
Antigüedad: 18 años
Puntos: 0
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!
  #6 (permalink)  
Antiguo 05/09/2007, 04:49
 
Fecha de Ingreso: mayo-2006
Mensajes: 7
Antigüedad: 18 años
Puntos: 0
Re: Imprimir con coordenadas

Hola seques,

Estoy usando la clase printDocument y me he encontrado con el mismo problema que tú, es decir, cuando invoca la línea document.Print(), se produce un error cuyo mensaje es "El servidor RPC no está disponible". Me gustaría saber si conseguiste solucionarlo y como.

Muchas gracias de antemano.

Saludos
  #7 (permalink)  
Antiguo 12/11/2008, 10:12
 
Fecha de Ingreso: noviembre-2008
Mensajes: 2
Antigüedad: 15 años, 5 meses
Puntos: 0
De acuerdo Respuesta: Imprimir con coordenadas

hola yo estoy en el mismo dilema tengo varios cheques que imprimir y cada uno de ellos tienen distintas coordenadas y lo que quiero saber como saber que coordenadas ponerle a l printdocument ya que el usuario puede saber en que lugar imprimir mediendo con un centimetro(regla)

esperando su respuesta ..... gracias
  #8 (permalink)  
Antiguo 12/11/2008, 10:14
 
Fecha de Ingreso: noviembre-2008
Mensajes: 2
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Re: Imprimir con coordenadas

Cita:
Iniciado por seques Ver Mensaje
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!
me puedes decir como hallastes las coordenadas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:44.