AS3使用PrintJob实现单页或多页打印

http://blog.csdn.net/weiming8517/article/details/8848387

单页打印

package{
	
	import flash.display.Sprite;
	import flash.printing.PrintJob;
	import flash.printing.PrintJobOptions;
	import flash.printing.PrintJobOrientation;
	import flash.geom.Rectangle;
	import flash.events.MouseEvent;
	
	public class BasicPrintExample extends Sprite{
		
		private var myPrintJob:PrintJob = new PrintJob();
		private var mySprite:Sprite = new Sprite();
		private var options:PrintJobOptions = new PrintJobOptions();
		private var rect1:Rectangle = new Rectangle(0,0,400,200);
		
		public function BasicPrintExample(){
			
			addChild(mySprite);
			mySprite.addChild(mc);
			
			btn.addEventListener(MouseEvent.CLICK, btnClick);
		}
		
		private function btnClick(e){
			printJob();
		}
		
		private function printJob(){
			options.printAsBitmap = true;
			myPrintJob.start();
			myPrintJob.addPage(mySprite,rect1,options);
			myPrintJob.send();
		}
		
	}
}


多页打印 ,每次printPage都要新new一个PtintJob

package  {
	//多页打印类
	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.events.MouseEvent;
	
	public class PrintMultiplePages extends MovieClip {

		private var sheet1:Sprite;
		private var sheet2:Sprite;
		private var sheet3:Sprite;

		public function PrintMultiplePages() {
			// constructor code
			init();
			
			btn.addEventListener(MouseEvent.CLICK, btnClick);
		}
		
		private function btnClick(e):void{
			printPages();//打印
		}
		
		private function init():void{
			sheet1 = new Sprite();
			createSheet(sheet1, "Once upon a time...",{x:10, y:50, width:80, height:130});
			sheet2 = new Sprite();
			createSheet(sheet2, "There was a great story to tell, and it ended quickly.\n\nThe end.", null);
			sheet3 = new Sprite();
			createSheet(sheet3, "你好,打印第三页!",null);
		}
		
		private function createSheet(sheet:Sprite, str:String, imgValue:Object):void{
			sheet.graphics.beginFill(0xeeeeee);
			sheet.graphics.lineStyle(1,0x000000);
			sheet.graphics.drawRect(0,0,100,200);
			sheet.graphics.endFill();
			
			var txt:TextField = new TextField();
			txt.height = 200;
			txt.width = 100;
			txt.wordWrap = true;
			txt.text = str;
			if(imgValue != null){
				var img:Sprite = new Sprite();
				img.graphics.beginFill(0x0066cc);
				img.graphics.drawRect(imgValue.x, imgValue.y, imgValue.width, imgValue.height);
				img.graphics.endFill();
				sheet.addChild(img);
			}
			sheet.addChild(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.");
				}
				
				sheet1.height = pj.pageHeight;
				sheet1.width = pj.pageWidth;
				sheet2.height = pj.pageHeight;
				sheet2.width = pj.pageWidth;
				sheet3.height = pj.pageHeight;
				sheet3.width = pj.pageWidth;
				try{
					pj.addPage(sheet1);
					pagesToPrint++;
				}catch(e:Error){
					//响应错误
				}
				try{
					pj.addPage(sheet2);
					pagesToPrint++;
				}catch(e:Error){
					//响应错误
				}
				try{
					pj.addPage(sheet3);
					pagesToPrint++;
				}catch(e:Error){
					//响应错误
				}
				
				
				if(pagesToPrint>0){
					pj.send();
				}
			}
		}

	}
	
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值