Exempel på utskrift: skala, beskära och svara

Flash Player 9 och senare, Adobe AIR 1.0 och senare

I vissa fall kanske vill du justera storleken (eller andra egenskaper) på ett visningsobjekt vid utskriften för att anpassa skillnaderna mellan hur det visas på skärmen och hur det ser ut på utskriften på papperet. När du anpassar egenskaperna för ett visningsobjekt innan du skriver ut det (till exempel med egenskaperna scaleX och scaleY ) och objektet skalförändras så att det blir större än den definierade rektangeln för utskriftsområdet, kommer objektet att beskäras. Du vill förmodligen också återställa egenskaperna när sidorna har skrivits ut.

Med följande kod skalförändras måtten för visningsobjektet txt (men inte den gröna bakgrunden) och då beskärs textfältet och får den angivna rektangelns mått. Efter utskriften återfår textfältet till sin ursprungliga storlek för visning på skärmen. Om användaren avbryter utskriften från operativsystemets utskriftsdialogruta, ändras innehållet i Flash-miljön och användaren får en varning om att utskriften har avbrutits.

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