Cómo establecer dinámicamente los márgenes de la página de impresión en Flash CS3

StackOverflow https://stackoverflow.com/questions/1642008

  •  10-07-2019
  •  | 
  •  

Pregunta

// Puedo obtener los márgenes correctos definiendo un rectángulo y dándole las siguientes dimensiones:

var rect1:Rectangle = new Rectangle(0, 0, 792,612); 

// Cuando se presiona el botón de impresión, el siguiente código se ejecuta utilizando las dimensiones definidas por rect1:

prntCover_btn.addEventListener(MouseEvent.CLICK, printCover);

function printCover(evt:MouseEvent):void {
    front_mc.visible = false;
        var myPrintJob:PrintJob = new PrintJob();
        var options:PrintJobOptions = new PrintJobOptions();
        options.printAsBitmap = true;
        front_mc.scaleX = 1;
        front_mc.scaleY = 1;
        myPrintJob.start();
        myPrintJob.addPage(front_mc, rect1, options);
        myPrintJob.send();

    } 

// El papel de EE. UU. es 792 = papel de 11.5 pulgadas de ancho. Me gustaría usar el tamaño A3, así que hice esto después de la línea myPrintJob.start ();

var margin_height:Number = (myPrintJob.paperHeight - myPrintJob.pageHeight)/2;
var margin_width:Number = (myPrintJob.paperWidth - myPrintJob.pageWidth)/2;

Esto no funciona para colocar el mc correctamente en la página. Esto es todo lo que proporciona la ayuda de Adobe. También busqué en Google y probé diferentes variaciones, pero no tuve éxito. ¿Alguien puede ayudar?

Gracias de antemano por cualquier idea sobre esto.

Annie

¿Fue útil?

Solución

Podría aclarar un poco la pregunta porque no está claro qué está tratando de lograr ... si entendí correctamente, probablemente quiera imprimir algo en medio de un papel más grande.

Puede obtener el tamaño de papel que el usuario eligió solo después de llamar a PrintJob.start () por lo que tendrá que definir el parámetro printArea después de eso. Como printArea define un rectángulo relativo al DisplayObject que se está imprimiendo, para centrar el DisplayObject deberá asegurarse de que el DisplayObject esté en el centro del rectángulo;

var myPrintJob:PrintJob = new PrintJob();
var options:PrintJobOptions = new PrintJobOptions();
options.printAsBitmap = true;
front_mc.scaleX = 1;
front_mc.scaleY = 1;
myPrintJob.start();

var marginWidth:Number = (myPrintJob.pageWidth - front_mc.width) / 2;
var marginHeight:Number = (myPrintJob.pageHeight- front_mc.height) / 2;
var rect:Rectangle = new Rectangle(-marginWidth, -marginHeight, myPrintJob.pageWidth, myPrintJob.pageHeight);

myPrintJob.addPage(front_mc, rect1, options);
myPrintJob.send();
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top