Independientemente de FoxyPreviewer, con VFP yo SIEMPRE he tenido el siguiente problema con impresoras de Matriz de Punto:
VFP imprime en las impresoras a través de Windows y en el caso de "Impresoras de Matriz" esto puede ser una desgracia porque Windows por default NO UTILIZA las tablas de caracteres grabadas en las memorias ROM de dichas impresoras. Windows lo que hace es "dibujar" las letras utilizando sus drivers (controladores) y esto supone una gran desventaja por las siguientes razones:
A- Las impresoras de Matriz estan optimizadas para imprimir utilizando sus tablas de caracteres ROM y no para dibujar punto por punto.
B- Si hablas de impresoras de Matriz de 9 pines la impresión saldrá muy "pixelada" o "punteada" o mejor dicho "desgraciada"
C- El asunto empeora si deseas imprimir caracteres menores de 7 puntos: algunos quedan tan deformes que ni se alcanzan a entender.
D- Como la impresión es "dibujada por puntos", en impresoras pequeñas como la EPSON LX-300 o la OKI ML-184, la impresión es
insoportablemente lenta.
Si Windows utilizara la tabla de caracteres ROM de las impresoras, esto NO SERÍA un problema porque aún en el modo mas condensado posible (20 cpi o caracteres por pulgada), aún en impresoras de 9 pines, las letras se miran bastante legibles pero cuando Windows "las dibuja" a puro punto, la impresión sale miserablemente ilegible.
Entonces no diríamos que es culpa de VFP, sino mas bien de "el concepto" de impresión que Windows utiliza con impresoras de Matriz, donde "hubiera sido bueno" que existiera un modo en el que se respetaran las tablas de caracteres internas de las impresoras (ROM).
Aún cuando elijes un "driver genérico" y defines la impresora como una "Genérica de Texto", el desventurado Windows imprime "dibujando" de todos modos.
SIN EMBARGO..... Sin embargo, afortunadamente, al poner a la impresora de Matriz como una "Genérica de Texto", tienes la oportunidad de imprimir a la "usanza" del viejo D.O.S. mediante un truco y este es el siguiente:
1- Pones el
SET REPORTBEHAVIOR 802- Mandas el reporte a un archivo ASCII colocando la clausula ASCII como por ejemplo:
REPORT FORM MiReport.FRX NOCONSOLE ASCII TO FILE MiTexto.txt
3- Creas un archivo .BAT que mande a imprimir el archivo tipo ASCII recién creado. Por ejemplo:
LPRINT.BAT TYPE MiTexto.txt > PRN
4- Luego mandas a ejecutar el archivo .BAT que creaste (llamado LPRINT.BAT según el ejemplo anterior):
RUN /N7 LPRINT.BATYo particularmente lo uso asi porque hago uso extenso de las sentencias ESC (comandos de impresión de Matriz). Por ejemplo, tengo una aplicación que imprime cheques y lo hace de esta forma:
- La fecha se imprime en pica de 12 CPI ( chr(27), chr(77) ) a doble tamaño ( chr(14) )
- El nombre del beneficiario del cheque en pica de 12 CPI ( chr(27), chr(77) ) a tamaño standard
- El monto del cheque se escribe enfatizado ( chr(27), chr(69) ), en pica de 12 ( chr(27), chr(77) ) a tamaño standard
En fin, hago uso extensivo de los tipos de letras internos de las impresoras de Matriz (ROM) y muchas veces, necesito imprimir con caracteres bastante pequeños (pica de 20 cpi) PERO QUE SEAN CLARAMENTE LEGIBLES y no los mamarrachos que "dibuja" Windows.
En resumen NO PERMITO que Windows "Dibuje la impresión", sino que mejor, yo mando directamente la impresión de un archivo ASCII para que la impresora de Matriz utilice su "modo nativo" de impresión y de esa manera si me salga "legible" la impresión aunque utilice letras bastante pequeñas (de 20 cpi).
Claro que PIERDO POR COMPLETO las otras habilidades de Windows como lo son el utilizar todos los FONTS, tipos y tamaños de letras de Windows, así como la impresión de imágenes, dibujitos y cosas por el estilo.
Salu2,
Edgar