Exemplo de impressão: escala, corte e resposta

Flash Player 9 e posterior, Adobe AIR 1.0 e posterior

Em alguns casos, você pode desejar ajustar o tamanho (ou outras propriedades) do objeto de exibição durante a impressão para acomodar diferenças entre a forma como ele é exibido na tela e como é impresso no papel. Quando você ajusta as propriedades de um objeto de exibição antes da impressão (por exemplo, usando as propriedades scaleX e scaleY ), lembre-se de que, se o objeto tiver a escala maior do que o retângulo definido para a área de impressão, ele será cortado. Talvez você também queira redefinir as propriedades depois que as páginas foram impressas.

O código a seguir escala as dimensões do objeto de exibição txt (mas não o plano de fundo da caixa verde) e o campo de texto acaba sendo cortado pelas dimensões do retângulo especificado. Após a impressão, o campo de texto volta ao seu tamanho original para exibição na tela. Se o usuário cancelar o trabalho de impressão da caixa de diálogo Imprimir do sistema operacional, o conteúdo no tempo de execução do Flash será alterado para alertar o usuário de que o trabalho foi cancelado.

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