Me supongo que lo que quieres hacer es imprimir tus recibos en los formularios troquelados que vienen con una
longitud de la mitad de 11" y con una impresora epson? si es asi pues:
1- Te recomiendo fuertemente que reemplaces tus @ SAY por ??? "TEXTO"+CHR(13)+CHR(10)
2- aca va el ejemplo de como yo lo hago
_cbig=CHR(18)+CHR(14)
_cmbi=CHR(15)+CHR(14)
_csma=CHR(18)+CHR(15)
_cnor=CHR(18)
_cbig=CHR(18)+CHR(14)
_eol =CHR(13)+CHR(10)
??? _eol
??? _cbig+[* LIQUIDACION DE SALARIOS (Art.xxx) *]+_eol+_eol
??? _cmbi+[Empleador ]+_ename+[ N. Patronal ]+SECCION.NPATRON+_eol
??? _cmbi+[Trabajador ]+STRTRAN(CODIGO," ","0")+"-"+CPCONVERT(1252,437,NOMBRE)+_cnor+_eol
??? _cnor+[Periodo ]+_Xper+[ L.]+STRTRAN(_ncompr," ","0")+_cnor+_eol+_eol
*... un largo etcetera intermedio
??? [FECHA DE PAGO: ]+DTOC(_fpago)
??? SPACE(54)+[...............................]+_eol
??? SPACE(80)+[ FIRMA ]+_eol+_eol+_eol+_eol+_eol+_eol
*//
*// FIN DEL RECIBO, SE SUPONE QUE SE HA IMPRESO Y/O AVANZADO 34 LINEAS con _eol(end-of-line)
*//
??? CHR(27)+
- &&este es el comando de inicializacion de impresora epson matricial lx-300
_plineno=0 &&seteamos el contador de linea
_pcolno =0 &&seteamos el contador de columna
Pero yo activo la impresora una vez he imprimo todos los recibos y recien alli lo desactivo y a mi me funciona correctamente te recomiendo fuertemente que leas exaustivamente el manual de tu impresora alli hay informacion valiosa que la mayoria de los programadores ignoran.
*******************************************************************************************************
*Estas tres lineas siguientes debes agregar a tu codigo para que simule un saldo de pagina
*y no usar EJECT, ojo luego de avanzar hasta la ultima linea de la hoja!!!!
*??? CHR(27)+
- &&este es el comando de inicializacion de impresora epson matricial lx-300
*_plineno=0 &&seteamos el contador de linea
*_pcolno =0 &&seteamos el contador de columna
*******************************************************************************************************
3- Ahora la pregunta del millon porque te recomiendo fuertemente que reemplaces tus @ SAY por ??? pues corre
estas sentencias desde un prg en el fox y verificaras la potencia de manejar la impresora a tu antojo
_picl1= CHR( 0)+CHR( 0)+CHR( 0)+CHR( 0)+CHR( 0)+CHR(142)+CHR(207)+CHR( 79)+CHR( 15)+CHR(159)+;
CHR(223)+CHR( 95)+CHR(159)+CHR(223)+CHR(223)+CHR( 80)+CHR( 16)+CHR(208)+CHR(208)+CHR( 16)+;
CHR(208)+CHR(208)+CHR( 16)+CHR(208)+CHR(208)+CHR( 16)+CHR(210)+CHR(215)+CHR( 23)+CHR( 87)+;
CHR(210)+CHR(128)+CHR( 0)+CHR( 64)+CHR(192)+CHR(128)+CHR( 0)+CHR( 0)+CHR( 0)+CHR( 0)
_picl2= CHR( 0)+CHR( 0)+CHR( 0)+CHR( 0)+CHR( 0)+CHR( 0)+CHR( 0)+CHR(128)+CHR(128)+CHR(128)+;
CHR(128)+CHR(128)+CHR(136)+CHR(140)+CHR( 12)+CHR( 12)+CHR( 4)+CHR( 4)+CHR( 4)+CHR(132)+;
CHR(196)+CHR(196)+CHR(132)+CHR( 4)+CHR( 4)+CHR( 4)+CHR( 0)+CHR( 0)+CHR( 0)+CHR( 0)+;
CHR( 0)+CHR( 0)+CHR( 0)+CHR( 0)+CHR( 0)+CHR( 0)+CHR( 0)+CHR( 0)+CHR( 0)+CHR( 0)
#define _sendtoprint
#ifdef _sendtoprint
SET CONSOLE OFF
_printer=GETPRINTER()
IF EMPTY( _printer )
MESSAGEBOX( [PRINT CANCEL!], 64, [WARNING!] )
RETURN .F.
ENDIF
#endif
#ifndef _sendtoprint
SET PRINTER TO FILE [SALIDA.TXT] ADDITIVE
SET PRINTER ON TO PROMPT
#else
SET PRINTER TO NAME (_printer)
#endif
SET DEVICE TO PRINTER
??? CHR( 18)+CHR( 15)
??? CHR( 27)+CHR( 89)+CHR( 40)+CHR( 0)+_picl1+" un saludo cordial desde:"+CHR(27)+CHR(74)+CHR(24)+CHR(13)
??? CHR( 27)+CHR( 89)+CHR( 40)+CHR( 0)+_picl2+" Encarnacion-PARAGUAY"+CHR(27)+CHR(74)+CHR(24)+CHR(13)
??? CHR( 27)+CHR( 74)+CHR( 24)+CHR( 13)
SET PDSETUP TO
SET PRINTER OFF
SET DEVICE TO SCREEN
SET CONSOLE ON
SET PRINTER TO 'LPT1'
RETURN .T.