Adjunto clase. Todo lo haces con comandos CHR. Mira el manual de la impresora.
*-- Debes hacer una configuración con los comandos CHR generales (inicio, largo de papel, termino, salto de página). Yo tenía para elegir entre dos tipos de impresora.
lcArchImpre = SYS(2015)+".prn"
SET DEVICE TO FILE (lcArchImpre)
@0,0 SAY codigos_impresion("CODIGOS_IMPRESION_INICIO")
IF lee_parametro("LARGO_PAPEL_"+lcDocImp) = "2" && largo papel PERSONALIZADO
lnLineas = VAL(lee_parametro("LARGO_PAPEL_EN_LINEAS_"+lcDocImp))
@PROW(), PCOL() SAY codigos_impresion("CODIGOS_IMPRESION_LONGITUD_PAGINA_LINEAS") + CHR(lnLineas)
ENDIF
* debe hacer una configuración de fila, col, y dato
@fila, col SAY "lo que quiero imprimir, junto a más comandos CHR si quiero"
@PROW() , PCOL() SAY codigos_impresion("CODIGOS_IMPRESION_TERMINO")
@PROW()+1, 0 SAY codigos_impresion("CODIGOS_IMPRESION_SALTO_PAGINA")
IF lee_parametro("LARGO_PAPEL_"+lcDocImp) = "2" && largo papel PERSONALIZADO
@PROW(), PCOL() SAY codigos_impresion("CODIGOS_IMPRESION_LONGITUD_PAGINA_LINEAS") + CHR(66)
ENDIF
SET DEVICE TO SCREEN
IF glCompilado
prtfile(lcArchImpre, lcNombreImpresora)
ELSE
RUN NOTEPAD &lcArchImpre.
ENDIF
IF FILE(lcArchImpre)
DELETE FILE lcArchImpre
ENDIF
RETURN
*------------------------------------------------------------------------------------------------------
PROCEDURE prtfile(cfiletoprt, cprinter)
If pcount()<2
? 'Do prtfile with "File to print", "printer name"'
?
? 'Eg. Do PrtFile with "TestPrint.prn", "Generic / Text Only"'
?
return
Endif
*Set Classlib To rawprint
vprdev=CreateObject("PrintDev")
vprdev.cprintername = cprinter
vprdev.cfilename = cfiletoprt
If vprdev.oOpen()
if !vprdev.oPrintFile()
*MessageBox("Error sending to printer")
mensaje("Error al imprimir."+CHR(13)+CHR(13)+"Impresora: "+cprinter)
endif
vprdev.oClose()
Else
*MessageBox("OpenPrinter() Error: "+str(vprdev.nOpenError))
mensaje("Error al intentar imprimir. Error: "+str(vprdev.nOpenError)+"."+CHR(13)+CHR(13)+;
"Impresora: "+cprinter)
Endif
Release vprdev
*Set Classlib to
Return