PDA

Ver la Versión Completa : Impresion en blanco en 600ppp


bosoft
15-12-2016, 09:42:57
Hola
Hace mucho tiempo que tengo este problema y hasta la fecha no he encontrado una solución decente.
Yo trabajo en C++ con Rad2007 y para realizar las impresiones primero lo hago en un canvas tamaño A4 con una resolución de 300ppp.
Una vez la impresión está realizada, redirijo la salida hacia un image o hacia una impresora (ejemplo)
Graphics::TBitmap *canvas = new Graphics::TBitmap();
Trect grafic;

if(impri->Execute()==false) return; //TPrinterSetupDialog

ancho=Printer()->PageWidth;
largo=Printer()->PageHeight;


// pixels del canvas A4 a 300ppp //
canvas->Height=3969; //largo
canvas->Width=2892; //ancho


grafic = Rect(0,0,ancho,largo); //dimensiones del canvas
Printer()->Copies=1;
Printer()->BeginDoc();

// copiamos a la printer
Printer()->Canvas->StretchDraw(grafic,canvas);

Printer()->EndDoc();
delete canvas;Esta forma permite visualizar la impresión sin depender de la impresora y hasta la fecha, quitando algún que otro problemilla, ha funcionado bien.
El problemilla, que ahora ya es un problema, viene dado cuando la impresora en cuestión es una HP a 600ppp. Hasta ahora lo había solucionado poniendo la resolución a 300ppp, pero la ultima impresora que me ha dado ese problema es una HP 1102W que no dispone de 300ppp.

El problema es que suelta las hojas en blanco, sin imprimir absolutamente nada. Hace años, cuando me percaté del error, estuve investigando. El problema creo que está en que no tiene memoria suficiente para crear la instancia de la impresora y por lo tanto no "imprime" nada en el canvas. Pero esto no ocurre en el sistema (ej. pagina de prueba).

¿Alguna idea?

Saludos