Esempio di stampa: modifica in scala, ritaglio e risposta

Flash Player 9 e versioni successive, Adobe AIR 1.0 e versioni successive

In alcuni casi, può essere utile modificare le dimensioni (o altre proprietà) di un oggetto di visualizzazione in fase di stampa per conciliare le differenze tra il modo in cui viene visualizzato sullo schermo e il modo in cui appare sul foglio stampato. Quando modificate le proprietà di un oggetto di visualizzazione prima della stampa (ad esempio, utilizzando le proprietà scaleX e scaleY ), tenete presente che se le dimensioni dell'oggetto modificate in scala sono superiori a quelle del rettangolo definito per l'area di stampa, l'oggetto verrà ritagliato. Una volta stampate le pagine, è inoltre consigliabile reimpostare le proprietà.

Il codice riportato di seguito modifica in scala le dimensioni dell'oggetto di visualizzazione txt (ma non lo sfondo della casella verde) e di conseguenza il campo di testo viene ritagliato in base alle dimensioni del rettangolo specificato. Dopo la stampa, vengono ripristinate le dimensioni originali del campo di testo per la visualizzazione sullo schermo. Se il lavoro di stampa viene annullato nella finestra di dialogo di stampa del sistema operativo, il contenuto nel runtime di Flash viene modificato per informare l'utente che il lavoro è stato annullato.

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; 
        } 
    } 
}