Imprimir

¿Hola qué tal?, le escribo por lo siguiente:
Tengo que imprimir datos de un formulario hecho en visual basic en una factura ya echa, imprimiendo por ejemplo el contenido del campo fecha donde dice fecha en la factura.
¿Me puede indicar que comandos tengo que utilizar para este propósito? Ya que no se como calcular bien las distancias de la factura preimpresa para que la impresión me quede justo en los lugares donde tienen que ir los datos
Gracias y espero sus consejos
martin

2 Respuestas

Respuesta
1
Como te dije Martin , tienes que ir experimentando , te sugiero lo siguiente : Saca varias fotocopias de una factura y trata de colocar la fotocopia en la misma posicion de origen que si fuera con las formas continuas de la factura pre-impresa.Coloca el cabezal de impresion en la posicion 0 con la instruccion Printer.currentX =0 y luego imprime una serie de caracteres para que te sirva de referencia: Printer.Print "12345678901234567890" ... etc.
COn esto te va a imprimir todos estos numeros y tu te fijas que numero cae al comienzo del campo que quieres imprimir , si por ejemplo cae en el tercer numero 4 para imprimir en ese campo debes colocar: Printer.currentx = 34 , espero que entiendas cual es la idea, cualquier cosa me preguntas de nuevo.
Gracias por contestarme!
¿Te hago una preguntita
como utilizo esas coordenadas que me dices para cada campo de datos que tengo?
Gracias
martin
Gracias por todo, apenas lo pruebe te comento que paso
Martin, vas a tener que gastar varios facturas tratando de centrar los datos donde tengas que imprimirlos en la factura preimpresa. Existe el método CurrentX y CurrentY que te sitúan el cabezal de impresión en las posiciones POR y Y respectivamente, pero esto no te asegura en que lugar de la factura te va a imprimir, porque depende del tipo de letra que uses, de la escala que estés usando y del tamaño de la letra, por tanto tienes que hacer varias impresiones de prueba, sin variar estos parámetros (fontsize, Fontname, scalemode) lo que yo hago es que imprimo una serie de números corridos desde el origen (12345678901234567890.. etc) así tengo una referencia donde imprime la coordenada POR, igual hago varias lineas con estos números y así veo la referencia de la coordenada Y, así puedes ubicar en la factura donde queda cada campo.
Saludos,
Juan Hernández
P.D.: Existe otro método que es imprimir directamente en LPT1 (como lo hace DOS) pero es un poco más complicado porque allí debes calcular tomando en cuenta el largo de cada campo que mandas a imprimir pues no tienes coordenadas POR, Y es impresión directa continua
Respuesta
1
Para imprimir en VB lo más fácil es utilizar el objeto Printer:
- Puedes ubicar el inicio de impresión con coordenadas respecto al papel (CurrentX y CurrentY).
- Para poner un determinado texto, por ejemplo el contenido de un textbox, seria así: Printer. Print TextBox1.Text.
- Una vez impreso todo, para que se vuelque el contenido del buffer de impresio en la impresora hay que indicar la finalización del documento (Printer. EndDoc).
-Si algo va mal, puedes cancelar el documento del buffer de impresión con Printer. KillDoc.
Ejemplo sencillo, te imprime el contenido de los textbox de un formulario enviado por parámetro:
Private Sub pImprimirFormulario(ByVal frm As Form)
Dim Ctrl As Variant
On Error GoTo TratarError
For Each Ctrl In frm.Controls
If TypeOf Ctrl Is TextBox Then
Printer.Print Ctrl.Text
End If
Next
Printer.EndDoc
TratarError:
If Err.Number <> 0 Then
Printer.KillDoc
MsgBox Err.Description, vbCritical, Err.Source
Err.Clear
End If
End Sub
Gracias por responderme, te hago una consultita
como utilizo (CurrentX y CurrentY)para ubicar cada posision de los datos que quiero imprimir en la factura.
Espero que me enteindas, gracias!
Una cosita más, como puedo utilizar el manejo de errores de impresión!
Gracias por todo
Es sencillo:
Printer.CurrentX = 1000
Printer.CurrentY = 1000
Lo complicado es saber en que unidades trabaja la impresora, las dimensiones de la hora en dichas unidades, etc.
Ves probando para hacerte una idea.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas