Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Помогите с постраничной печатью текста (http://www.flasher.ru/forum/showthread.php?t=145333)

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



Часовой пояс GMT +4, время: 23:12.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.