FoxPro/Visual FoxPro - Avance de página no deseado al mandar a imprimir

   
Vista:

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
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Avance de página no deseado al mandar a imprimir

Publicado por santiago (376 intervenciones) el 22/12/2014 15:40:23
Hola, primero, pienso que tu P.D., esta demás, suena a exigencia, y aquí nadie esta obligado a responderte, cualquier opinión o ayuda debe ser bien recibida y debidamente agradecida.

tu secuencia es:

SET CONSOLE OFF
SET PRINTER TO NAME "Epson LX-300+"
SET PRINTER ON

retira el SET PRINTER ON

y prueba con:

SET CONSOLE OFF
SET PRINTER TO NAME "Epson LX-300+"
SET DEVI TO PRINT

Suerte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Avance de página no deseado al mandar a imprimir

Publicado por Lukas (2 intervenciones) el 23/12/2014 04:31:13
disculpen si el P.D. sonó a exigencia
no era mi intención
bueno modifiqué el código como indicaste
pero ahora no imprime nada
lo que sucede es que SET PRINTER ON es para direccionar salidas con el comando "?" ó "??"
y SET DEVICE TO PRINTER para salidas @ SAY
mil gracias por tu respuesta
saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Avance de página no deseado al mandar a imprimir

Publicado por Saul (676 intervenciones) el 23/12/2014 16:16:24
Hola lo que te recomiendo es que veas las caracteristicas del folleto de la impresora, recuerdo que venian con un folleto, donde decia como imprimir, (claro creo que ahora ya no se usa eso), pero antes mandaban un folleto.
hablando para configurar (CHR(27)..

Si no estoy mal CHR(27)+´C´+CHR(15), creo que cambia la letra tamaño 15

SET DIVICE TO PRINTER
SET PRINTER ON
SET CONSOLE OFF
?? CHR(27)+'C'+CHR(33) &&Tamaño de la hoja

** TODO LO QUE TENGO QUE IMPRIMIR

?? CHR(27)+'C'+CHR(66)

SET DIVICE TO SCREEN
SET PRINTER OFF
SET CONSOLE ON
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar