RE:Como imprimir en modo texto?
Saludos... aquí tienes una rutiiiiiiina para que manejes la impresión con un archivo que se genera tipo texto... nota el .bat no corre en xp, debes colocar el comando RUN('...') al final con una variable que diga algo asi...
string ls_comando
ls_comando='copy ' + ls_nom_recibo +' lpt0'
RUN(ls_comando)
Nota: 'ls_nom_recibo' es la dirección completa del archivo que generes con la rutina...
Esta es la rutina... revísala... espero que te sirva...
lpt0 es el puerto donde esté conectada la impresora (lpt0, lpt1...)
Debes revisar longitud de la hoja (lineas de impresión), renglones que puedes imprimir, líneas de totales, etc...
Espero que te sirva...
------- Impresora POS ---------
String ls_string, ls_nom_recibo, ls_return
Long ll_lin_recibo, ll_lin_recibo2, ll_pagina, ll_linea, ll_job
Integer li_i, i, li_filenum, li_control
ls_nom_recibo = "C:\tmp\RC" + RIGHT(trim(string(recibo)),5) + ".txt"
li_FileNum = FileOpen( ls_nom_recibo, LineMode!, Write!, LockWrite!, Replace!)
ls_return = " "
//
// Se maneja el pool de impresion linea por linea.
if (ll_lin_recibo > 0 ) then
for li_i = 1 to 2
ll_pagina = 33
//Cantidad de items de la factura (máximo 4 items)
for ll_linea = 1 to ll_lin_recibo
if (ll_pagina >= 29 ) then
if (li_i = 2 ) then
//Dejar N lineas en blanco (margen superior)
//ls_string = "...inicio"
ls_string = " "
li_control =N
DO while li_control > 0
FileWrite(li_FileNum, ls_return )
li_control –-
LOOP
end if
//Imprimir el encabezado, son cinco líneas de encabezado
ls_string = ds_recibo.GetItemString(ll_linea,"cf_titulo1")
FileWrite(li_FileNum, ls_string )
ls_string = ds_recibo.GetItemString(ll_linea,"cf_titulo2")
FileWrite(li_FileNum, ls_string )
ls_string = ds_recibo.GetItemString(ll_linea,"cf_titulo3")
FileWrite(li_FileNum, ls_string )
ls_string = ds_recibo.GetItemString(ll_linea,"cf_titulo4")
FileWrite(li_FileNum, ls_string )
ls_string = ds_recibo.GetItemString(ll_linea,"cf_titulo5")
FileWrite(li_FileNum, ls_string )
//Imprimir separador del encabezado ls_string = fill("-",38) FileWrite(li_FileNum, ls_string )
ll_pagina = 9
end if
//Imprimir cuerpo de factura ls_string = ds_recibo.GetItemString(ll_linea,"texto")
FileWrite(li_FileNum, ls_string )
ll_pagina ++
next
//Imprimir separador de totales
ls_string = fill("-",38)
FileWrite(li_FileNum, ls_string )
//Imprimir Sub-Total
ls_string = ds_recibo2.GetItemString(ll_lin_recibo2,"cf_total1")
FileWrite(li_FileNum, ls_string )
//Imprimir separador de totales
ls_string = fill("-",38)
FileWrite(li_FileNum, ls_string )
//Imprimir Totales
ls_string = ds_recibo2.GetItemString(ll_lin_recibo2,"cf_total3")
FileWrite(li_FileNum, ls_string )
ls_string = ds_recibo2.GetItemString(ll_lin_recibo2,"cf_total4")
FileWrite(li_FileNum, ls_string )
//Imprimir separador de factura
ls_string = fill("-",38)
FileWrite(li_FileNum, ls_string )
ll_pagina += 6
ls_string = " "
// Imprimir hasta fin de página
for i = 1 to (33 - ll_pagina - 4)
FileWrite(li_FileNum, ls_string )
next
FileWrite(li_FileNum, ls_string )
next
// Dejar N lineas en blanco (margen superior)
ls_string = " "
ll_pagina=4
DO while ll_pagina > 0
FileWrite(li_FileNum, ls_string )
ll_pagina –
LOOP
end if
FileClose(li_FileNum)
Run(" C:\PRNREC.BAT " + ls_nom_recibo )