Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 05.10.2010, 11:15
proxiServer вне форума Посмотреть профиль Отправить личное сообщение для proxiServer Найти все сообщения от proxiServer
  № 1  
Ответить с цитированием
proxiServer
 
Аватар для proxiServer

Регистрация: Jun 2006
Сообщений: 400
По умолчанию Помогите с постраничной печатью текста

Не нашел сразу нигде и решил сам написать. Думал что ничего сложного. В общем так и есть. Только столкнулся с проблемой. Периодически неверно определяются количество строк на печатную страницу и я получаю вместо трех страниц по 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, время: 04:07.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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