Я знаю, что на этом форуме есть похожие вопросы, но я попробовал опубликованные идеи, но они не сработали.
По сути, мы пытаемся напечатать видеоклип, содержащий графику, нарисованную пользователем. У нас есть прямоугольник, который служит холстом, и некоторые рисунки могут быть за пределами этого холста. То, что мы пытаемся сделать, это напечатать только то, что находится на холсте, который не начинается с (0,0). Размер холста также должен быть изменен перед печатью для правильного размещения на бумаге.
Нам было интересно, есть ли у кого-нибудь решение для этого? Мы пробовали много разных вещей, но они всегда либо обрезаются, либо имеют неправильный размер, либо даже неправильно растягиваются.
Вот наш супер грязный код!
function startPrint(evnt: Event) {
printJob = new PrintJob();
var xNumber:Number = allGraphic.x; //saving the original x-value of the movieclip
var yNumber:Number = allGraphic.y; //saving y
var wNumber:Number = allGraphic.width; //saving width
var hNumber:Number = allGraphic.height; //saving height
var rect:Rectangle = new Rectangle (0,0,0,0); //printArea
var sucess = printJob.start();
if (sucess) {
if (printJob.orientation == PrintJobOrientation.LANDSCAPE) {
//allGraphic.rotation = 90;
rect.x = 115;
rect.y = 107;
rect.width = 792;
rect.height = 576;
allGraphic.width = 792;
allGraphic.height = 576;
} //end if (landscape)
else {
rect.x = 110; //x coor of the printArea rectangle
rect.y = 85; //y coor
rect.width = 875; //width of printArea
rect.height = 475; // height of printArea
allGraphic.width = allGraphic.width *(576/wNumber); //scale the movieclip width (with the drawing)
allGraphic.height = allGraphic.height * (396/hNumber); // height scaling
}//end else
printJob.addPage (allGraphic, rect);
}//end
if success
//reset allGraphic back to original size
allGraphic.x = xNumber;
allGraphic.y = yNumber;
allGraphic.width = wNumber;
allGraphic.height = hNumber;
}