Se me ha presentado este caso extraño, cuando configuro mi sistema no tengo ningún problema con las impresoras EPSON ya que uso códigos ESC estandar, pero justo ayer me tope con un cliente con una impresora STAR SP-700 y así es como sale el ticket:
[img] [/img]
El orden de impresión es de arriba a abajo, asi como está en la foto es como está orientado a la hora que el ticket va saliendo. Pero como verán las líneas de texto salen de derecha a izquierda y de cabeza.

Mis códigos de impresión que uso son estos:
Code: Select all
PUBLIC BOLDON := CHR(27)+'E'
PUBLIC BOLDOF := CHR(27)+'F'
PUBLIC LITTLON := CHR(15)
PUBLIC LITTLOF := CHR(18)
PUBLIC PFF := CHR(12)
PUBLIC PLF := CHR(10)+CHR(13)
PUBLIC PCR := CHR(13)
PUBLIC INIPRINT := CHR(27)+CHR(67)+CHR(0)
PUBLIC ENDPRINT := CHR(27)+CHR(105) // Corte de papel Tiketeras EPSON CHR(27)+CHR(109) = Corte parcial
Code: Select all
// APERTURA DE LA TABLA CON EL CONTENIDO DEL DOCUMENTO FORMXXXX
SELE 0
USE &cFormaDbf ALIAS FORMH SHARED READONLY VIA 'DBFCDX'
IF .NOT. FILE(cFormaCdx)
INDEX ON FRM_SECC TAG FormxSecc TO &cFormaCdx
ENDIF
SET INDEX TO &cFormaCdx
DBGOTOP()
SET PRINTER TO c:\infofarma\tmp\sending.prn
SET PRINTER ON
? LITTLON+BOLDOF
DO WHILE FRM_SECC = 1
? &(ALLTRIM(FRM_VAR))
SKIP
ENDDO
aDetas := {}
DO WHILE FRM_SECC = 2
AADD( aDetas , ALLTRIM(FRM_VAR) )
SKIP
ENDDO
VItemTope := if( VFormItms = 99 , LEN( aFormItems ) , VFormItms )
FOR nItem = 1 TO VItemTope
IF nItem <= LEN( aFormItems )
ITM_NUM := aFormItems[nItem,1]
ITM_COD := aFormItems[nItem,2]
ITM_NOM := aFormItems[nItem,3]
ITM_LAB := aFormItems[nItem,4]
ITM_VVF := aFormItems[nItem,5]
ITM_IGV := aFormItems[nItem,6]
ITM_PVF := aFormItems[nItem,7]
ITM_UNI := aFormItems[nItem,8]
ITM_FRA := aFormItems[nItem,9]
DO CASE
CASE ITM_UNI > 0 .AND. ITM_FRA > 0
ITM_UF := ALLTRIM(STR(ITM_UNI,6))+'-'+ALLTRIM(STR(ITM_FRA,6))
CASE ITM_UNI > 0 .AND. ITM_FRA = 0
ITM_UF := ALLTRIM(STR(ITM_UNI,6))
CASE ITM_UNI = 0 .AND. ITM_FRA > 0
ITM_UF := ALLTRIM(STR(ITM_FRA,6))
ENDCASE
ITM_PRU := aFormItems[nItem,10]
ITM_PRF := aFormItems[nItem,11]
ITM_TSB := aFormItems[nItem,12]
ITM_TIG := aFormItems[nItem,13]
ITM_TTL := aFormItems[nItem,14]
ITM_LOT := aFormItems[nItem,15]
ITM_VEN := aFormItems[nItem,16]
ITM_PRX := IF( ITM_PRF > 0 , ITM_PRF , ITM_PRU )
FOR nDeta = 1 TO LEN( aDetas )
cItem := aDetas[nDeta]
? &cItem
NEXT
ELSE
? ' '
ENDIF
NEXT
DO WHILE FRM_SECC = 3
? &(ALLTRIM(FRM_VAR))
SKIP
ENDDO
IF VFormItms = 99
? ENDPRINT
ENDIF
SET PRINTER OFF
SET PRINTER TO
WIN_PRINTFILERAW( VImprDest , "c:\infofarma\tmp\sending.prn" , "documento venta infofarma" )
lPrintOk := .T.
CLOSE FORMH
RETURN( lPrintOk )
De antemano muy agradecido y reciban todos mis cordiales saludos.