Ejemplo de impresión: Ajuste de escala, recorte y respuesta

Flash Player 9 y posterior, Adobe AIR 1.0 y posterior

En algunos casos, es posible que se desee ajustar el tamaño (u otras propiedades) de un objeto de visualización cuando se imprime, con el fin de ajustar las diferencias entre su aspecto en la pantalla y su aspecto impreso en papel. Cuando se ajustan las propiedades de un objeto de visualización antes de imprimir (por ejemplo, usando las propiedades scaleX y scaleY ), hay que tener en cuenta que si se ajusta la escala del objeto más allá del rectángulo definido en el área de impresión, el objeto quedará recortado. También es probable que se deseen restablecer las propiedades después de imprimir las páginas.

El siguiente código ajusta la escala de las dimensiones del objeto de visualización txt (pero no el fondo del cuadro verde) y el campo de texto queda recortado por las dimensiones del rectángulo especificado. Después de imprimir, el campo de texto recupera su tamaño original de visualización en la pantalla. Si el usuario cancela el trabajo de impresión desde el cuadro Imprimir del sistema operativo, el contenido del motor de ejecución de Flash cambia para avisar al usuario de que se ha cancelado el trabajo.

package 
{ 
    import flash.printing.PrintJob; 
    import flash.display.Sprite; 
    import flash.text.TextField; 
    import flash.display.Stage; 
    import flash.geom.Rectangle; 
     
    public class PrintScaleExample extends Sprite 
    { 
        private var bg:Sprite; 
        private var txt:TextField; 
 
        public function PrintScaleExample():void 
        { 
            init(); 
            draw(); 
            printPage(); 
        } 
         
        private function printPage():void 
        { 
            var pj:PrintJob = new PrintJob(); 
            txt.scaleX = 3; 
            txt.scaleY = 2; 
            if (pj.start()) 
            { 
                trace(">> pj.orientation: " + pj.orientation); 
                trace(">> pj.pageWidth: " + pj.pageWidth); 
                trace(">> pj.pageHeight: " + pj.pageHeight); 
                trace(">> pj.paperWidth: " + pj.paperWidth); 
                trace(">> pj.paperHeight: " + pj.paperHeight);     
 
                try 
                { 
                    pj.addPage(this, new Rectangle(0, 0, 100, 100)); 
                } 
                catch (error:Error) 
                { 
                    // Do nothing. 
                } 
                pj.send(); 
            } 
            else 
            { 
                txt.text = "Print job canceled"; 
            } 
            // Reset the txt scale properties. 
            txt.scaleX = 1; 
            txt.scaleY = 1; 
        } 
         
        private function init():void 
        { 
            bg = new Sprite(); 
            bg.graphics.beginFill(0x00FF00); 
            bg.graphics.drawRect(0, 0, 100, 200); 
            bg.graphics.endFill(); 
             
            txt = new TextField(); 
            txt.border = true; 
            txt.text = "Hello World"; 
        } 
         
        private function draw():void 
        { 
            addChild(bg); 
            addChild(txt); 
            txt.x = 50; 
            txt.y = 50; 
        } 
    } 
}