Quiero realizar cortes condicionados por lineas de productos en una impresora termica de rollo.
hasta ahorita tengo el codigo que han puesto los demas compañeros usando tprinter con canvas.
El codigo que tengo me imprime correctamente los cambios de lineas con encabezados pero el corte del papel solo lo hace al final de toda la impresion
algun compañero que me pueda dar una luz
Código: Seleccionar todo
.
.
.
.
lPrimera:= .T.
cLinea:= "@"
cSubLinea:= "#"
WITH OBJECT Printer:oCanvas
FOR EACH aItems IN aComandas
IF cLinea+cSubLinea != aItems[1]+aItems[13] // AQUI CONTROLO EL CAMBIO DE LINEA DE LOS PRODUCTOS QUE ESTOY IMPRIMIENDO
IF !lPrimera
nFilas:= Printer:PhysicalOffset()[2]
PrnCommand( Chr(27)+"m", nImpresora ) // TRATANDO DE SEGUIR UNA LOGICA ENVIO LOS CODIGOS DEL CORTE DE PAPEL USANDO LA FUNCION
// DE JOSE ALFONSO. PERO EL CORTE DE PAPEL NO LO HACE EN EL LUGAR CORRESPONDIENTE
// QUE SERIA AL FINAL DE CADA LINEA DE PRODUCTO
Printer:EndPage() // CON ESTE FINAL E INCIO DE PAGINA ME IMPRIME CORRECTAMENTE LOS "ENCABEZADOS" DE LAS LINEAS EN EL ROLLO
Printer:StartPage()
ENDIF
lPrimera:= .F.
cLinea:= aItems[1]
cSubLinea:= aItems[13]
nLinea:= PrnHeaderComanda()
nFilas:= Printer:PhysicalOffset()[2]
nColum:= Printer:PhysicalOffset()[1]
ENDIF
IF aItems[10]="Carta"
:oFont:= oFontTit3
cCantidad:= Transform( aItems[6],"@Z 9,999.99")
:TextOut( nColum+10, nLinea, cCantidad )
:TextOut( nColum+180, nLinea, aItems[3] )
ELSEIF aItems[10]="Modificador"
:oFont:= oFontTit4
cCantidad:= Transform( aItems[6],"@Z 999")
:TextOut( nColum+70, nLinea, cCantidad )
:TextOut( nColum+180, nLinea, aItems[3] )
ENDIF
IF aItems[10]="Carta"
nLinea+= 45
ELSEIF aItems[10]="Modificador"
nLinea+= 50
ENDIF
:oFont:= oFontTit3
:TextOut( nColum+30, nLinea, aItems[8] )
NEXT
END WITH
Saludos
Gabo