In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Cortar de Papel con TPrinter y Canvas (Solucionado)

Foro público de Xailer en español
Avatar de Usuario
gabo1
Mensajes: 127
Registrado: Lun Oct 13, 2014 9:42 am

Cortar de Papel con TPrinter y Canvas (Solucionado)

Mensaje 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
Responder