Imprimir en Impresora Matricial

23/04/2010 - 19:37 por aa | Informe spam
Hola a todos:

Necesito imprimir facturas en una impresora matricial epson lx300. El
usuario debe seleccionar varios remitos y al dar clic en facturar el sistema
debe imprimir en formularios preimpresos las facturas correspondientes. El
problema que tengo es que no se como configurar la impresora para que me
respete los saltos de paginas y el largo del papel. ustedes saben como debo
encarar este problema. Que me recomiendan??}

Gracias
Daniel Flores

Preguntas similare

Leer las respuestas

#6 Victor Espina
29/04/2010 - 02:32 | Informe spam
Hola.

La mayoria de las impresoras matriciales trabajan con alguna version
del lenguaje ESC/P. Este lenguaje consiste en una serie de comandos
binarios que se le envian a la impresora para configurar sus diferentes
caracteristicas, como ancho y alto de la pagina, nivel de compresion,
separacion entre lineas, etc.

Normalmente, las impresoras trabajan con impresoras tamano carta, de
8.5" x 11". Igualmente, por defecto trabajan con una separacion entre
lineas de 6 LPI o "lines per inch". Esto quiere decir que en una pagina
tipo Carta, que tiene 11" de alto, deberian caber 6 x 11 = 66 lineas.

En la practica, sin embargo, en una impresora tipica se logran imprimir
alrededor de 60 a 62 lineas. Yo, normalmente, me tranzo en 60.

Si tus formatos de factura son de tamano carta, no deberias tener que
hacer nada para que la impresora lograra saltar correctamente de una
factura a otra, mas alla de enviarle el comando de salto de pagina. Lo
cual nos lleva a otro punto importante: si estas usando un formato
grafico de VFP para imprimir en el formato preimpreso, VFP se deberia
encargar automaticamente del salto de pagina... aunque a veces se
necesita mucho de trabajo de ajuste en los tamanos del HEader y del
Footer, hasta lograr que las cosas caigan donde deben ir y el salto
entre paginas sea correcto.

Por otro lado, es posible enviar a imprimir directamente a la impresora
sin pasar por VFP. Esto se logra de muchas maneras, pero la mas
efectiva es usar una clase gratuita llamada PrintDev (seguro la puedes
conseguir en PortalFox).

Lo que te permite PrintDev es armar toda tu impresion en una variable
de memoria (en forma de varias lineas de texto) o en un archivo texto y
luego enviar ese archivo a la impresora directamente, logrando asi un
mayor control y ademas una gran velocidad de impresion.

Un ejemplo muy sencillo de como usar esta libreria seria asi:

#DEFINE CRLF CHR(13)+CHR(10)
LOCAL cTextToPrint
cTextToPrint = "Esta es la primera linea" + CRLF + ;
"Esta es la 2da linea" + CRLF + ;
"Esta es la 2ra linea" + CHR(12)

El ultimo CHR(12) es el comando ESC/P para forzar un salto de pagina en
ese punto. Una vez definido el texto a imprimir, es cuestion de
pasarselo a PrintDev:

SET CLASSLIB TO PrintDev
oPrinter = CREATEOBJECT("PrintDev")
oPrinter.cPrinterName = "Epson FX-300" && Aqui va el nombre de la
impresora segun Windows
oPrinter.oPrintMem(cTextToPrint)

Sobre formatos personalizados en Windows
Hasta Win98, uno podia crear un formato personalizado y dicho formato
se podia de alguna forma exportar a otros equipos. A partir de WinNT,
esto ya no fue mas posible, pues Windows asigna un ID unico a ese
formato en cada equipo, por lo que la solucion de crear un formato
personalizado ya no aplica en los casos en los que tienes que usar tu
sistema en varias estaciones.

Ahora, si estas imprimiendo directamente sin pasar por Windows, y tu
formato preimpreso viene en un tamano DISTINTO al Carta, entonces debes
configurar la impresora mediante codigo, para indicarle el tamano de
papel a utilizar. Esto lo puedes lograr con el comando:

CHR(27)+"C"+CHR(n)

Donde "n" es el nro. de lineas maximas que caben dentro de ese tamano
de papel, asumiendo un espaciado de 6 LPI. Por ejemplo, para
configurar la impresora para usar hojas de media carta, seria:

cTextToPrint = CHR(27) + "C" + CHR(33)

dado que 5.5" x 6 lpi = 33

Esto lograrar que al enviar el comando de EJECT a la impresora
(CHR(12)), esta sepa cuantas lineas debe saltar para llegar al inicio
de la siguiente hoja.


Espero que estos comentarios te arrojen luz sobre el tema.


Saludos


Victor Espina




On 2010-04-23 13:07:59 -0430, "aa" said:

Hola a todos:

Necesito imprimir facturas en una impresora matricial epson lx300. El
usuario debe seleccionar varios remitos y al dar clic en facturar el sistema
debe imprimir en formularios preimpresos las facturas correspondientes. El
problema que tengo es que no se como configurar la impresora para que me
respete los saltos de paginas y el largo del papel. ustedes saben como debo
encarar este problema. Que me recomiendan??}

Gracias
Daniel Flores
Respuesta Responder a este mensaje
#7 aa
29/04/2010 - 13:06 | Informe spam
Hola Victor, muchas gracias por responder. Te agradezco mucho.

Me podes decir de donde se puede descargar la clase "PrintDev". La busque en
PortalFox pero no encontre nada.

Muchas Gracias
Daniel Flores

"Victor Espina" escribió en el mensaje
news:
Hola.

La mayoria dtore las impresoras matriciales trabajan con alguna version
del lenguaje ESC/P. Este lenguaje consiste en una serie de comandos
binarios que se le envian a la impresora para configurar sus diferentes
caracteristicas, como ancho y alto de la pagina, nivel de compresion,
separacion entre lineas, etc.

Normalmente, las impresoras trabajan con impresoras tamano carta, de 8.5"
x 11". Igualmente, por defecto trabajan con una separacion entre lineas
de 6 LPI o "lines per inch". Esto quiere decir que en una pagina tipo
Carta, que tiene 11" de alto, deberian caber 6 x 11 = 66 lineas.

En la practica, sin embargo, en una impresora tipica se logran imprimir
alrededor de 60 a 62 lineas. Yo, normalmente, me tranzo en 60.

Si tus formatos de factura son de tamano carta, no deberias tener que
hacer nada para que la impresora lograra saltar correctamente de una
factura a otra, mas alla de enviarle el comando de salto de pagina. Lo
cual nos lleva a otro punto importante: si estas usando un formato
grafico de VFP para imprimir en el formato preimpreso, VFP se deberia
encargar automaticamente del salto de pagina... aunque a veces se necesita
mucho de trabajo de ajuste en los tamanos del HEader y del Footer, hasta
lograr que las cosas caigan donde deben ir y el salto entre paginas sea
correcto.

Por otro lado, es posible enviar a imprimir directamente a la impresora
sin pasar por VFP. Esto se logra de muchas maneras, pero la mas efectiva
es usar una clase gratuita llamada PrintDev (seguro la puedes conseguir en
PortalFox).

Lo que te permite PrintDev es armar toda tu impresion en una variable de
memoria (en forma de varias lineas de texto) o en un archivo texto y luego
enviar ese archivo a la impresora directamente, logrando asi un mayor
control y ademas una gran velocidad de impresion.

Un ejemplo muy sencillo de como usar esta libreria seria asi:

#DEFINE CRLF CHR(13)+CHR(10)
LOCAL cTextToPrint
cTextToPrint = "Esta es la primera linea" + CRLF + ;
"Esta es la 2da linea" + CRLF + ;
"Esta es la 2ra linea" + CHR(12)

El ultimo CHR(12) es el comando ESC/P para forzar un salto de pagina en
ese punto. Una vez definido el texto a imprimir, es cuestion de pasarselo
a PrintDev:

SET CLASSLIB TO PrintDev
oPrinter = CREATEOBJECT("PrintDev")
oPrinter.cPrinterName = "Epson FX-300" && Aqui va el nombre de la
impresora segun Windows
oPrinter.oPrintMem(cTextToPrint)

Sobre formatos personalizados en Windows
Hasta Win98, uno podia crear un formato personalizado y dicho formato se
podia de alguna forma exportar a otros equipos. A partir de WinNT, esto ya
no fue mas posible, pues Windows asigna un ID unico a ese formato en cada
equipo, por lo que la solucion de crear un formato personalizado ya no
aplica en los casos en los que tienes que usar tu sistema en varias
estaciones.

Ahora, si estas imprimiendo directamente sin pasar por Windows, y tu
formato preimpreso viene en un tamano DISTINTO al Carta, entonces debes
configurar la impresora mediante codigo, para indicarle el tamano de papel
a utilizar. Esto lo puedes lograr con el comando:

CHR(27)+"C"+CHR(n)

Donde "n" es el nro. de lineas maximas que caben dentro de ese tamano de
papel, asumiendo un espaciado de 6 LPI. Por ejemplo, para configurar la
impresora para usar hojas de media carta, seria:

cTextToPrint = CHR(27) + "C" + CHR(33)

dado que 5.5" x 6 lpi = 33

Esto lograrar que al enviar el comando de EJECT a la impresora (CHR(12)),
esta sepa cuantas lineas debe saltar para llegar al inicio de la siguiente
hoja.


Espero que estos comentarios te arrojen luz sobre el tema.


Saludos


Victor Espina




On 2010-04-23 13:07:59 -0430, "aa" said:

Hola a todos:

Necesito imprimir facturas en una impresora matricial epson lx300. El
usuario debe seleccionar varios remitos y al dar clic en facturar el
sistema
debe imprimir en formularios preimpresos las facturas correspondientes.
El
problema que tengo es que no se como configurar la impresora para que me
respete los saltos de paginas y el largo del papel. ustedes saben como
debo
encarar este problema. Que me recomiendan??}

Gracias
Daniel Flores




Respuesta Responder a este mensaje
#8 mario alfredo
29/04/2010 - 18:41 | Informe spam
victor espina te mandastes con esa clase de impresion matricial, yo
sabia de eso que el papel tamaño carta era 8.5 por 11 porque cuando se
compra viene rotulado, 6 lineas por pulgada, me llega
Respuesta Responder a este mensaje
#9 Victor Espina
29/04/2010 - 18:43 | Informe spam
http://www.victorespina.com.ve/hs/f...wprint.rar

Va solo la clase, porque no consegui el download original con la
documentacion. Pero como va con el codigo fuente, puedes revisarlo y
hacerte una idea de como usarlo. Es bien simple. De todas formas,
buscando en Google por printdev o rawprint.vcx, seguramente encontraras
varios ejemplos de como usarlo.

Saludos

Victor Espina

On 2010-04-29 06:36:32 -0430, "aa" said:

Hola Victor, muchas gracias por responder. Te agradezco mucho.

Me podes decir de donde se puede descargar la clase "PrintDev". La busque en
PortalFox pero no encontre nada.

Muchas Gracias
Daniel Flores

"Victor Espina" escribió en el mensaje
news:
Hola.

La mayoria dtore las impresoras matriciales trabajan con alguna version
del lenguaje ESC/P. Este lenguaje consiste en una serie de comandos
binarios que se le envian a la impresora para configurar sus diferentes
caracteristicas, como ancho y alto de la pagina, nivel de compresion,
separacion entre lineas, etc.

Normalmente, las impresoras trabajan con impresoras tamano carta, de 8.5"
x 11". Igualmente, por defecto trabajan con una separacion entre lineas
de 6 LPI o "lines per inch". Esto quiere decir que en una pagina tipo
Carta, que tiene 11" de alto, deberian caber 6 x 11 = 66 lineas.

En la practica, sin embargo, en una impresora tipica se logran imprimir
alrededor de 60 a 62 lineas. Yo, normalmente, me tranzo en 60.

Si tus formatos de factura son de tamano carta, no deberias tener que
hacer nada para que la impresora lograra saltar correctamente de una
factura a otra, mas alla de enviarle el comando de salto de pagina. Lo
cual nos lleva a otro punto importante: si estas usando un formato
grafico de VFP para imprimir en el formato preimpreso, VFP se deberia
encargar automaticamente del salto de pagina... aunque a veces se necesita
mucho de trabajo de ajuste en los tamanos del HEader y del Footer, hasta
lograr que las cosas caigan donde deben ir y el salto entre paginas sea
correcto.

Por otro lado, es posible enviar a imprimir directamente a la impresora
sin pasar por VFP. Esto se logra de muchas maneras, pero la mas efectiva
es usar una clase gratuita llamada PrintDev (seguro la puedes conseguir en
PortalFox).

Lo que te permite PrintDev es armar toda tu impresion en una variable de
memoria (en forma de varias lineas de texto) o en un archivo texto y luego
enviar ese archivo a la impresora directamente, logrando asi un mayor
control y ademas una gran velocidad de impresion.

Un ejemplo muy sencillo de como usar esta libreria seria asi:

#DEFINE CRLF CHR(13)+CHR(10)
LOCAL cTextToPrint
cTextToPrint = "Esta es la primera linea" + CRLF + ;
"Esta es la 2da linea" + CRLF + ;
"Esta es la 2ra linea" + CHR(12)

El ultimo CHR(12) es el comando ESC/P para forzar un salto de pagina en
ese punto. Una vez definido el texto a imprimir, es cuestion de pasarselo
a PrintDev:

SET CLASSLIB TO PrintDev
oPrinter = CREATEOBJECT("PrintDev")
oPrinter.cPrinterName = "Epson FX-300" && Aqui va el nombre de la
impresora segun Windows
oPrinter.oPrintMem(cTextToPrint)

Sobre formatos personalizados en Windows
Hasta Win98, uno podia crear un formato personalizado y dicho formato se
podia de alguna forma exportar a otros equipos. A partir de WinNT, esto ya
no fue mas posible, pues Windows asigna un ID unico a ese formato en cada
equipo, por lo que la solucion de crear un formato personalizado ya no
aplica en los casos en los que tienes que usar tu sistema en varias
estaciones.

Ahora, si estas imprimiendo directamente sin pasar por Windows, y tu
formato preimpreso viene en un tamano DISTINTO al Carta, entonces debes
configurar la impresora mediante codigo, para indicarle el tamano de papel
a utilizar. Esto lo puedes lograr con el comando:

CHR(27)+"C"+CHR(n)

Donde "n" es el nro. de lineas maximas que caben dentro de ese tamano de
papel, asumiendo un espaciado de 6 LPI. Por ejemplo, para configurar la
impresora para usar hojas de media carta, seria:

cTextToPrint = CHR(27) + "C" + CHR(33)

dado que 5.5" x 6 lpi = 33

Esto lograrar que al enviar el comando de EJECT a la impresora (CHR(12)),
esta sepa cuantas lineas debe saltar para llegar al inicio de la siguiente
hoja.


Espero que estos comentarios te arrojen luz sobre el tema.


Saludos


Victor Espina




On 2010-04-23 13:07:59 -0430, "aa" said:

Hola a todos:

Necesito imprimir facturas en una impresora matricial epson lx300. El
usuario debe seleccionar varios remitos y al dar clic en facturar el
sistema
debe imprimir en formularios preimpresos las facturas correspondientes.
El
problema que tengo es que no se como configurar la impresora para que me
respete los saltos de paginas y el largo del papel. ustedes saben como
debo
encarar este problema. Que me recomiendan??}

Gracias
Daniel Flores
Respuesta Responder a este mensaje
#10 josepe
03/05/2010 - 16:07 | Informe spam
Ese problema no es de VFP, es el comun error que dan las impresoras que
pod defecto toman el tamaño de papel A4. Es molesto eso, suce en varias
marcas de impresor (HP, Epson). Ve al panel de Control: Impresores. Alli
en Propiedades verifica que el tamaño de papel por defecto no sea A4.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida