Página 1 de 1

Cortar de Papel con TPrinter y Canvas (Solucionado)

Publicado: Mar Nov 17, 2015 1:36 am
por gabo1
Hola estimados
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

Espero y algun compañero me pueda dar una luz..
Saludos
Gabo