AS3使用PrintJob实现单页或多页打印
2013-12-19 10:16
281 查看
as3实现打印功能:
主要用到PrintJob类中的start()、addPage(mc:sprite,rect,option)、send()三个方法。
单页打印代码
[java] view
plaincopy
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();
}
}
}
多页打印代码
[java] view
plaincopy
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();
}
}
}
}
}
多页打印效果图:
主要用到PrintJob类中的start()、addPage(mc:sprite,rect,option)、send()三个方法。
单页打印代码
[java] view
plaincopy
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();
}
}
}
多页打印代码
[java] view
plaincopy
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();
}
}
}
}
}
多页打印效果图:
相关文章推荐
- 【记录】Python中安装xlrd模块
- java调用系统程序
- iOS 7 ViewController Lifecycle
- windows mysql 自动备份的几种方法
- 网页源代码查看器
- HashMap源码
- jQuery中ajax的使用与缓存问题的解决方法
- mysql 无法启动时,告诉你一个比较二的秘密
- 独立开发者的自白:Objective-C最糟糕的13件事
- Android Camera 通过V4L2与kernel driver的完整交互过程
- 热键的实现
- 薛非《品悟C-抛弃C程序设计中的谬误与恶习》读后感part1【转】
- OpenCart之特色商品(Featured)模块教程
- launchpad openstack 注册并加入项目组
- linux运维:Linux下添加新硬盘+分区及挂载详细步骤图解
- 服务器从jdk1.6.0升级到1.6.0_12的过程记录
- Windows Server 2008 R2 安装及配置指南
- TableView API
- HashSet源代码剖析
- Linux GPIO驱动相关笔记