| proxiServer |
05.10.2010 11:15 |
Помогите с постраничной печатью текста
Не нашел сразу нигде и решил сам написать. Думал что ничего сложного. В общем так и есть. Только столкнулся с проблемой. Периодически неверно определяются количество строк на печатную страницу и я получаю вместо трех страниц по 25 строк кучу страниц по 5 строк. Количество строк я взял с потолка, но смысл такой.
Буду благодарен за готовое решение.
Кому интересно, вот код:
Код AS3:
var options:PrintJobOptions = new PrintJobOptions();
options.printAsBitmap = true;
var pj:PrintJob = new PrintJob();
if (pj.start()) {
try {
var raw:BitmapData;
var textSprite:Sprite = new Sprite();
var printText:TextField = new TextField();
var printPages:Array = new Array();
printText.text =textArea.text;
var linesStep:int = printText.numLines / printText.bottomScrollV;
var linesCounter:int = 0;
printText.width = pj.pageWidth;
printText.height = pj.pageHeight;
var buffTextField:TextField = new TextField();
buffTextField.width = pj.pageWidth;
buffTextField.height = pj.pageHeight;
textSprite.addChild(printText);
textSprite.addChild(buffTextField);
buffTextField.setTextFormat(new TextFormat("Courier", 10));
for (var i:int = 0; i < printText.numLines; i++ ) {
buffTextField.appendText(printText.getLineText(i)+"\r\n");
if ((i!=0)&&i % printText.bottomScrollV == 0) {
trace();
raw = new BitmapData(pj.pageWidth, pj.pageHeight);
raw.draw(buffTextField);
var spr:Sprite = new Sprite();
spr.addChild(new Bitmap(raw));
printPages.push(spr);
buffTextField.text = "";
}
}
if (buffTextField.numLines != 0) {
raw = new BitmapData(pj.pageWidth, pj.pageHeight);
raw.draw(buffTextField);
spr = new Sprite();
spr.addChild(new Bitmap(raw));
printPages.push(spr);
}
for (i = 0; i < printPages.length;++i ){
pj.addPage(printPages[i]);
}
} catch(e:Error) {
trace( e );
}
pj.send();
}
|