Druckbeispiel: Skalieren, Zuschneiden und Anpassen

Flash Player 9 und höher, Adobe AIR 1.0 und höher

Bei Bedarf können Sie die Größe (oder andere Eigenschaften) eines Anzeigeobjekts beim Drucken anpassen, um so Unterschiede zwischen der Darstellung auf dem Bildschirm und der Druckversion auf Papier auszugleichen. Beim Anpassen der Eigenschaften eines Anzeigeobjekts vor dem Drucken (z. B. mit den Eigenschaften scaleX und scaleY ) müssen Sie beachten, dass das Objekt zugeschnitten wird, wenn es größer als das für den Druckbereich festgelegte Rectangle-Objekt ist. Es empfiehlt sich außerdem, die geänderten Eigenschaften nach dem Drucken der Seiten wieder zurückzusetzen.

Mit dem folgenden Code werden die Abmessungen des txt -Anzeigeobjekts skaliert (nicht jedoch der grüne Feldhintergrund). Das Textfeld wird entsprechend den Abmessungen des angegebenen Rectangle-Objekts zugeschnitten. Nach dem Drucken wird das Textfeld für die Anzeige auf dem Bildschirm auf die ursprüngliche Größe zurückgesetzt. Wenn der Benutzer den Druckauftrag im Druckdialogfeld des Betriebssystems abbricht, ändert sich der in der Flash-Laufzeitumgebung angezeigte Inhalt, um den Benutzer darüber zu informieren, dass der Druckauftrag abgebrochen wurde.

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