Impresion en Impresora Matricial

337 views
Skip to first unread message

Daniel Flores

unread,
Jun 5, 2015, 7:52:19 AM6/5/15
to publice...@googlegroups.com
Hola a todos:

tengo que imprimir unos recibos en impresoras Epson LX300 - Papel continuo. La pagina esta dividida en dos recibos (Original y duplicado. El tema es que funciona perfecto en la PC de diseño, pero cdo lo llevo a la pc del cliente lo imprime desordenado, es decir toma el tamaño de una hoja A4 para cada recibo. En la pc de diseño tengo creado un tipo de papel con las medidas que necesito de cada recibo. esto tambien lo hice en la pc del cliente pero es como que no lo respeta..

Como puedo solucionar este problema??

Muchas Gracias a todos como siempre.

Daniel Flores

panchimancuso

unread,
Jun 5, 2015, 9:47:21 AM6/5/15
to publice...@googlegroups.com, danie...@gmail.com
Hola daniel yo utilizo RawPrint5.Fll , googlealo para descargar anda barbaro la libreria o dosprint.vcx son librerias para manejo de impresoras matriciales , es muy simple su uso 
un ejemplo :

sele temporal1
cPrinter = GETPRINTER( )
con=1
do while con <= 3
IF !empty(cPrinter)
archivo="\stock\controldestockyfacturacion\choferes.TXT"
DO coli099
thisform.imprime
DO coli098
lsuccess=RAWPRINT(cPrinter,archivo)
ENDIF
con=con+1
enddo

coli099 prg

***************  COLI099  COMMAND FILE  *************************
*   Programa: INICIO DE LISTADORES                              *
*****************************************************************

SET library to rawprint5.fll additive
SET PRINTER TO FILE &ARCHIVO
SET CONSOLE OFF
SET DEVICE TO PRINT
SET MARGIN TO 0
SET PRINT ON
??CHR(27)+'@'+CHR(27)+'M'+CHR(18)
??chr(27)+chr(67)+chr(18)          
**longitud de pag.=18 lineas
SET PRINT OFF
RETURN
***********************************************************************

coli098
***************  COLI098  COMMAND FILE  *************************
*   Programa: FINAL DE LISTADORES                               *
*****************************************************************

@ 0,0 say " "+CHR(27)+'@'
SET PRINTER TO
SET PRINTER OFF
SET DEVICE TO SCREEN
SET CONSOLE ON
RETURN
*: EOF: COLI098.PRG
*lin=1
*@ lin,0 say CHR(27)+'@'+CHR(27)+'M'+CHR(18)

 con esto anda barbaro y seteas a 6 pulgadas el salto de pagina , lo manejas todo con codigo de la impre.
saludos

Victor Espina

unread,
Jun 5, 2015, 10:08:45 AM6/5/15
to publice...@googlegroups.com, panchi...@gmail.com, danie...@gmail.com
DOSPrint (DP) es ahora un proyecto opensource en VFPx con el nombre VFPDosPrint:


A diferencia de rawprint5.fll, VFPDosPrint es un completo generador de reportes basados en texto, que funciona de manera similar al generador de reportes de VFP:  creas un formato de impresion que luego unes con una fuente de datos para generar un reporte final, que es enviado a la impresora matricial usando impresion directa, lo que garantiza acceso completo a la velocidad maxima de impresion de la impresora.

Saludos

Victor Espina

Mary

unread,
Jun 5, 2015, 11:39:10 AM6/5/15
to publice...@googlegroups.com, danie...@gmail.com
Victor seria bueno que hagas un ejemplo por como tu dices en palbras parece facil , quizas para ustdes que son buenos programadores pero yo no pude usarla gracias

Daniel Flores

unread,
Jun 5, 2015, 12:06:35 PM6/5/15
to publice...@googlegroups.com, danie...@gmail.com
Gracias por responder:

Hace mucho alguien dijo que teniamos que borrar algo de los reportes para que no tome los datos de la impresora, pero no me acuerdo bien que era. teniamos que abrir el reporte como tabla y borrar algo. Alguno de acuerda de esto???

Gracias

Victor Espina

unread,
Jun 5, 2015, 6:03:07 PM6/5/15
to publice...@googlegroups.com, danie...@gmail.com
Si, pero eso no va a solucionar el problema del tamano de pagina personalizado.  El problema es los tamanos de pagina creados en Windows tienen un codigo que es unico entre cada equipo.  Por tanto, incluso si en el conputador del cliente tu creas un tamano de papel con el mismo nombre, el reporte no podra usarlo porque el codigo es distinto.  La unica forma seria modificar el reporte EN EL COMPUTADOR del cliente, selecionar el tamano de papel personalizado y grabar el reporte.

Victor

Jorge Montúfar

unread,
Jun 5, 2015, 6:18:37 PM6/5/15
to publicesvfoxpro
Ese problema da siempre, pero lo que se tiene que hacer es revisar bien otra vez la instalacion de la impresora, el nombre del tamaño de papel y ahi tiene que funcionar.

Eso me sucedio con las impresion de cheques, facturas, etc.

Víctor Hugo Espínola Domínguez

unread,
Jun 5, 2015, 6:28:15 PM6/5/15
to publice...@googlegroups.com
Hola Daniel

Qué longitud tiene cada hoja de tu formulario continuo?

Victor Espina

unread,
Jun 5, 2015, 9:02:04 PM6/5/15
to publice...@googlegroups.com, maeo...@gmail.com, danie...@gmail.com
reporte.fmt
----------------
<config>
paperLenght
=60   // Tamano carta
</config>

<macros>
xnombre=nombre
xapellido=apellido
xe=ALLT(STR(edad))
</
macros>

<format>
he
:              EJEMPLO CON VFPDOSPRINT
he
:         Fecha: [DATE()  ]    Hora: [TIME()]
he
:
he
: NOMBRE           APELLIDO              EDAD
he
: ================ ===================== ====
de
: [xnombre       ] [xapellido          ] [xe]
fo:
fo
: Pagina: $_PAGENO$
</format>

DATOS
.DBF
-----------
nombre C
(50)
apellido C
(50)
edad N
(3)

TEST
.PRG
--------
SELECT 0
USE datos
GO TOP

LOCAL oDP
SET PROCEDURE TO vdp ADDITIVE
oDP
=CREATEOBJECT("VFPDosPrint")
oDP
.PrintFormat="REPORTE.FMT"
oDP
.Run("datos")
oDP
.Print("EPSON-LX")

* Tambien se puede grabar el reporte en un archivo texto
oDP
.PrintToFile("salida.txt")    


Mas informacion aqui:


Saludos

Victor Espina

ZeRoberto

unread,
Jun 6, 2015, 12:30:12 AM6/6/15
to publice...@googlegroups.com
Victor las macros deberían ser de la A-Z son 24 columnas no creo que alguien pase de esa cantidad no?

Victor Espina

unread,
Jun 6, 2015, 7:08:30 AM6/6/15
to publice...@googlegroups.com, zero...@gmail.com
Es una forma de verlo, pero en mi opinion dificulta la lectura del formato luego.  La regla que yo uso es asi:

1. Si el nombre del origen de la columna cabe dentro del ancho de la misma,. uso directamente el nombre (ej:  [nomcliente            ])
2. Si el nombre del origen de la columna no cabe dentro del ancho, o se necesita aplicar una transformacion, uso una macro (ej:  [xmonto      ]  xmonto = TRANS(monto, "999,999.99"))
3. Toda macro empieza por X para diferenciarlas de los nombres de coumna o de variables de ambiente

Saludos

Victor
Reply all
Reply to author
Forward
0 new messages