Как динамически устанавливать поля страницы печати во Flash CS3

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

  •  10-07-2019
  •  | 
  •  

Вопрос

// Я могу получить правильные поля, определив прямоугольник и присвоив ему следующие размеры:

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

//При нажатии кнопки печати выполняется следующий код с использованием размеров, определенных параметром 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();

    } 

// Американская бумага имеет ширину 792 = 11,5 дюйма.Хотел бы использовать размер A3, поэтому я сделал это после строки myPrintJob.start();

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

Это не помогает правильно разместить mc на странице.Это все, что предоставляет справка Adobe.Также погуглил и попробовал разные варианты, но безуспешно.Кто-нибудь может помочь?

Заранее спасибо за любое понимание этого.

Энни

Это было полезно?

Решение

Вы могли бы немного прояснить вопрос, потому что немного неясно, чего вы пытаетесь достичь...если я правильно понял, вы, вероятно, хотите напечатать что-то в середине листа большего размера.

Вы можете получить выбранный пользователем формат бумаги только после вызова PrintJob.start() таким образом, вам придется определить printArea параметр после этого.В качестве printArea определяет прямоугольник относительно выводимого на печать DisplayObject, для центрирования DisplayObject вам нужно убедиться, что DisplayObject находится в центре прямоугольника;

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();
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top