Voorbeeld van afdrukken: schalen, bijsnijden en reageren

Flash Player 9 of hoger, Adobe AIR 1.0 of hoger

In bepaalde gevallen wilt u misschien bij het afdrukken de grootte (of andere eigenschappen) van een weergaveobject aanpassen om de verschillen tussen de weergave op het scherm en de afdruk op papier te compenseren. Wanneer u de eigenschappen van een weergaveobject aanpast voordat u dit afdrukt (bijvoorbeeld door gebruik te maken van de eigenschappen scaleX en scaleY ), houd er dan rekening mee dat het object wordt bijgesneden als dit een grotere schaal krijgt dan de voor het afdrukgebied gedefinieerde rechthoek. Bovendien zult u de eigenschappen na het afdrukken van de pagina’s waarschijnlijk weer op hun oorspronkelijke waarden willen terugzetten.

In de volgende code worden de afmetingen geschaald van het weergaveobject txt (maar niet van het groene vak dat als achtergrond fungeert) en wordt het tekstveld bijgesneden op basis van de afmetingen van de gedefinieerde rechthoek. Na het afdrukken wordt het tekstveld teruggezet naar het oorspronkelijke formaat voor weergave op het scherm. Als de gebruiker de afdruktaak annuleert vanuit het dialoogvenster Afdrukken van het besturingssysteem, wordt de inhoud in de Flash-runtime gewijzigd zodat de gebruiker wordt gewaarschuwd dat de afdruktaak is geannuleerd.

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