imprimir un jpg

votos
0

He intentado imprimir un jpg cargado dinámicamente y, por alguna razón, nunca imprime a escala, no estoy seguro de lo que estoy haciendo mal, así que esto es lo que hice hasta ahora

var request:URLRequest = new URLRequest(getAbsPath(pages/ + pagePrint + _big.jpg));
var loader:Loader = new Loader();
loader.load(request);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);

var frame:Sprite = new Sprite()
function completeHandler(event:Event):void {

    var picture:Bitmap = Bitmap(loader.content);
    var bitmap:BitmapData = picture.bitmapData;
    var matrix:Matrix = new Matrix();
    matrix.scale(1, 1);

    frame.graphics.beginBitmapFill(bitmap, matrix, true);
    frame.graphics.drawRect(0, 0, bitmap.width, bitmap.height);
    frame.graphics.endFill();
    addChild(frame);
    frame.visible = false;

    printPage();    
}
function printPage ():void {
    var myPrintJob:PrintJob = new PrintJob();
    var options:PrintJobOptions = new PrintJobOptions();
    options.printAsBitmap = true;

    myPrintJob.start();

    try {
        myPrintJob.addPage(frame, null, options);
    }
    catch(e:Error) {
        trace (Had problem adding the page to print job:  + e);
    }

    try {
        myPrintJob.send();
    }
    catch (e:Error) {
        trace (Had problem printing:  + e);    
    }
}

Por alguna razón, solo toma una parte de la imagen y la hace explotar para llenar una página completa ... las dimensiones de jpg son 1280x1656 y me gustaría imprimir todo el jpg ... ¿Alguna idea de lo que estoy haciendo mal?

Publicado el 28/09/2009 a las 13:27
fuente por usuario
En otros idiomas...                            


2 respuestas

votos
0

Escalaría el clip apropiadamente antes de intentar imprimir.

Puede obtener el ancho y alto de píxeles de la página de salida con:

myPrintJob.pageWidth
myPrintJob.pageHeight

Y configure el .scaleX y .scaleY del marco basado en eso.

(El manejo de la impresión es notoriamente basura en todas las versiones de Flash Player, tienes que hacer mucho trabajo tú mismo, me temo ...)

Respondida el 29/09/2009 a las 15:11
fuente por usuario

votos
0

Supongo que su imagen se envía a la cola de impresión con una resolución predeterminada de 72 ppp, por lo que sale enorme (a 1280x1656 es una imagen de 17.777 "x 23"), así que supongo que solo verá la parte superior izquierda la mayoría de la porción se ajusta en la página impresa física.

Para resolver esto, puede escalar la imagen para que quepa en la página (probablemente a una escala de al menos .45) que saldrá con menos detalles ya que sigue siendo una resolución de 72dpi bastante baja. O puede usar el segundo enfoque, que es configurar el DPI para que sea más preciso para el tamaño de impresión deseado (probablemente 300 ppp o menos)

Si necesita restablecer el DPI interno de la imagen, el único método que he visto (pero no probado personalmente) es la clase ImageSnapshot en el SDK de Flex. Puede usarlo para extraer BitmapData en un DPI específico, luego puede enviar ese BitmapData a PrintJob.

ImageSnapshot.captureBitmapData () Documentación

Además, una cosa más fácil de probar ... Si el archivo de imagen JPEG que está cargando tiene un DPI más alto, probablemente se pierda cuando realice su BeginBitmapFill (). ¿Podría intentar agregar Bitmap como hijo de 'frame' en lugar de dibujarlo? Eso puede preservar la resolución de manera adecuada para usted.

Respondida el 29/09/2009 a las 15:30
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more