[转]這是一個多分頁打印的類

http://bbs.9ria.com/viewthread.php?tid=101119&extra=page%3D1%26amp%3Borderby%3Ddateline%26amp%3Bfilter%3D2592000


package org
{
import flash.display.MovieClip;
import flash.printing.PrintJob;
import flash.printing.PrintJobOrientation;
import flash.display.Stage;
import flash.display.Sprite;
import flash.text.TextField;
import flash.geom.Rectangle;
import flash.text.TextFormat;
/**
* ...
* @author vinson
* 這是一個多分頁打印的類,只有一個公用方法setPrint
* 以A4紙,12號字體每頁60行字來計算,這樣如果是170行字就會自動打印成三頁內容
*/
public class PrintMultiplePages extends MovieClip
{
private var sheetBox:Array;
private var sheet:Sprite;
public function PrintMultiplePages():void
{
init();
}
private function init():void
{
sheetBox=new Array;
}
public function setPrint(allStr:String):void
{
var txt:TextField = createText();
txt.text = allStr;
trace(txt.numLines)
var limitLine:int = 60;//限制每頁60行
var allPages:int= Math.ceil(txt.numLines / limitLine)//總的有幾頁
var remainder:int = txt.numLines % limitLine;//最後一頁不是60行而是餘下的行數
for (var i:int = 0; i < allPages; i++)
{
var sheet:Sprite = new Sprite();
var tempStr:String="";
var tempLine:int = limitLine * i
if (i != allPages-1)
{
for (var j:int = tempLine; j < tempLine + limitLine;j++)
{
tempStr+= txt.getLineText(j);
}
}
else
{
for (j = tempLine; j < tempLine + remainder-1;j++)
{
tempStr+= txt.getLineText(j);
}

}
trace(i,tempStr)
createSheet(sheet, tempStr);
sheetBox.push(sheet)
}

printPages();
}
private function createSheet(sheet:Sprite, str:String):void
{
sheet.graphics.beginFill(0xFFFFFF);
sheet.graphics.lineStyle(1, 0xFFFFFF);
sheet.graphics.drawRect(0, 0, 787, 1092);
sheet.graphics.endFill();
var txt:TextField = createText();
txt.text = str;
sheet.addChild(txt);
//this.addChild(sheet)
}
private function createText():TextField
{
var txtFormat:TextFormat = new TextFormat;
txtFormat.leftMargin = 2;
txtFormat.rightMargin = 60;

var txt:TextField = new TextField();
txt.defaultTextFormat = txtFormat;
txt.wordWrap = true;
txt.multiline = true;
txt.height = 1090;
txt.width = 650;
return txt;
}
private function printPages():void
{
var pj:PrintJob = new PrintJob();
var pagesToPrint:uint = 0;
if (pj.start())
{
if (pj.orientation == PrintJobOrientation.LANDSCAPE)
{
throw new Error("Page is not set to an orientation of portrait.");
}
for (var i:int = 0; i < sheetBox.length; i++)
{
var sheet:Sprite=sheetBox[i]
try
{
pj.addPage(sheet);
pagesToPrint++;
}
catch (error:Error)
{
// Respond to error.
}
}
if (pagesToPrint > 0)
{
pj.send();
}
}
}
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值