Exemple d’impression : mise à l’échelle, recadrage et ajustement

Flash Player 9 et les versions ultérieures, Adobe AIR 1.0 et les versions ultérieures

Dans certains cas, il s’avère utile d’ajuster la taille (ou d’autres propriétés) d’un objet d’affichage à imprimer afin de tenir compte des différences entre son aspect à l’écran et le rendu sur papier. Lorsque vous modifiez les propriétés d’un objet d’affichage avant l’impression (par exemple à l’aide des propriétés scaleX et scaleY ), n’oubliez pas que si l’objet redimensionné reste plus grand que le rectangle défini comme zone d’impression, il est recadré. Il est également judicieux d’envisager de rétablir les propriétés après l’impression des pages.

Le code suivant modifie les dimensions de l’objet d’affichage txt (sans altérer la zone d’arrière-plan verte). Pour finir, le champ de texte est recadré en fonction des dimensions du rectangle spécifié. Après l’impression, le champ de texte retrouve sa taille originale d’affichage à l’écran. Si l’utilisateur annule la tâche d’impression dans la boîte de dialogue d’impression du système d’exploitation, le contenu du moteur d’exécution de Flash est modifié pour avertir l’utilisateur de cette annulation.

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