Avance de página no deseado al mandar a imprimir
Publicado por Lukas (2 intervenciones) el 22/12/2014 14:26:20
Amigos, que tal.
Una consulta.
Tengo una impresora matricial Epson LX-300+,
conectado físicamente a la computadora mediante un cable USB,
las computadoras que tenemos ya no traen puerto LPT, por eso usamos el cable USB.
Trabajo en VFP 9.0 SP2, con Windows 7 Ultimate.
Utilizo el código siguiente para imprimir en modo DOS:
SET CONSOLE OFF
SET PRINTER TO NAME "Epson LX-300+"
SET PRINTER ON
??? " " && con esto la impresión sale en modo DOS, directo
? "LISTA DE PRODUCTOS"
? "y a continuación todo lo que deseo imprimir..."
SET PRINTER OFF
SET PRINTER TO
Ok, lo que no entiendo es porqué en este modo, la línea:
??? " "
bota una página en blanco, y recién empieza la impresión a partir de la 2da página.
Pueden simplificar el código así:
SET CONSOLE OFF
SET PRINTER TO NAME "Nombre de impresora matricial que tengan instalado en un puerto usb"
SET PRINTER ON
??? " "
también botará una página en blanco primero.
Sin embargo al usar el siguiente código:
SET CONSOLE OFF
SET DEVICE TO PRINTER
SET PRINTER TO
??? " "
@2,2 SAY "LISTA DE PRODUCTOS"
La impresión se ejecuta con toda normalidad y sin avanzar ninguna página en blanco.
Siendo así, no me queda otra que usar los @ SAY
El problema con el @ SAY es que tengo muchos reportes con el comando "??", decenas.
y no quiero estar cambiando cada reporte por el @ SAY
Sé que hay soluciones alternas como la de usar el comando:
NET USE LPT1 \\Computadora\Impresora_compartida /PERSISTENT:YES
Lo anterior es un problema, hay que valerse de un archivo bat para eso,
o abrir una ventana DOS y ejecutarlo, o ejecutarlo por el comando RUN de vfp,
claro que persistent conecta el puerto nuevamente al iniciar la pc pero siempre y cuando la impresora esté encendida, si está apagada tengo que prender la impresora y volver a ejecutar NET USE.
Conclusión, no me sirve.
O también, obviar el comando ??? " " y ejecutar lo siguiente:
SET PRINTER TO NAME "Epson LX-300+"
SET PRINTER FONT 'Draft 12cpi'
De lo anterior, la impresión mejora, pero sigue siendo algo lenta.
En fin, sólo deseo usar el comando:
??? " "
y los comandos siguientes:
? "Todo lo que desee imprimir sin que me tenga que botar una página en blanco primero"
? "etc, etc, etc."
Es posible?
P.D.:
no quiero soluciones NET USE
nada de APIs como el copyfile()
y menos el tipo de letra modo DRAFT
Gracias por sus respuestas
Una consulta.
Tengo una impresora matricial Epson LX-300+,
conectado físicamente a la computadora mediante un cable USB,
las computadoras que tenemos ya no traen puerto LPT, por eso usamos el cable USB.
Trabajo en VFP 9.0 SP2, con Windows 7 Ultimate.
Utilizo el código siguiente para imprimir en modo DOS:
SET CONSOLE OFF
SET PRINTER TO NAME "Epson LX-300+"
SET PRINTER ON
??? " " && con esto la impresión sale en modo DOS, directo
? "LISTA DE PRODUCTOS"
? "y a continuación todo lo que deseo imprimir..."
SET PRINTER OFF
SET PRINTER TO
Ok, lo que no entiendo es porqué en este modo, la línea:
??? " "
bota una página en blanco, y recién empieza la impresión a partir de la 2da página.
Pueden simplificar el código así:
SET CONSOLE OFF
SET PRINTER TO NAME "Nombre de impresora matricial que tengan instalado en un puerto usb"
SET PRINTER ON
??? " "
también botará una página en blanco primero.
Sin embargo al usar el siguiente código:
SET CONSOLE OFF
SET DEVICE TO PRINTER
SET PRINTER TO
??? " "
@2,2 SAY "LISTA DE PRODUCTOS"
La impresión se ejecuta con toda normalidad y sin avanzar ninguna página en blanco.
Siendo así, no me queda otra que usar los @ SAY
El problema con el @ SAY es que tengo muchos reportes con el comando "??", decenas.
y no quiero estar cambiando cada reporte por el @ SAY
Sé que hay soluciones alternas como la de usar el comando:
NET USE LPT1 \\Computadora\Impresora_compartida /PERSISTENT:YES
Lo anterior es un problema, hay que valerse de un archivo bat para eso,
o abrir una ventana DOS y ejecutarlo, o ejecutarlo por el comando RUN de vfp,
claro que persistent conecta el puerto nuevamente al iniciar la pc pero siempre y cuando la impresora esté encendida, si está apagada tengo que prender la impresora y volver a ejecutar NET USE.
Conclusión, no me sirve.
O también, obviar el comando ??? " " y ejecutar lo siguiente:
SET PRINTER TO NAME "Epson LX-300+"
SET PRINTER FONT 'Draft 12cpi'
De lo anterior, la impresión mejora, pero sigue siendo algo lenta.
En fin, sólo deseo usar el comando:
??? " "
y los comandos siguientes:
? "Todo lo que desee imprimir sin que me tenga que botar una página en blanco primero"
? "etc, etc, etc."
Es posible?
P.D.:
no quiero soluciones NET USE
nada de APIs como el copyfile()
y menos el tipo de letra modo DRAFT
Gracias por sus respuestas
Valora esta pregunta
0