1. 程式人生 > >AS3使用PrintJob實現單頁或多頁列印

AS3使用PrintJob實現單頁或多頁列印

as3實現列印功能:

主要用到PrintJob類中的start()、addPage(mc:sprite,rect,option)、send()三個方法。

單頁列印程式碼

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

多頁列印程式碼

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

	}
	
}


多頁列印效果圖:


相關推薦

AS3使用PrintJob實現列印

as3實現列印功能: 主要用到PrintJob類中的start()、addPage(mc:sprite,rect,option)、send()三個方法。 單頁列印程式碼 package{ import flash.display.Sprite; import fla

Word怎麼將兩)內容列印在一張A4紙上

把多頁的Word文件縮小列印到一張紙上 怎樣在Word2007中將多頁文件列印在一頁紙上 Word怎麼將兩頁內容列印在一張A4紙上 上述做法有個美中不足的地方:選擇了“每版列印N頁”,右邊看不到預覽效果(仍然保留每版1頁)如下圖,只有實際打印出來才知道效果如何。

進程、線程並發、線程分別實現爬一個個網站的所有鏈接,用瀏覽器打開所有鏈接並保存截圖 python

app imp mat 並發執行 cut h+ chrome 鏈接 目錄 #coding=utf-8import requestsimport re,os,time,ConfigParserfrom selenium import webdriverfrom multipr

【每日一點】1. Java如何實現匯出Excel表頭表頭

一、背景         在後臺專案中,經常會遇到將呈現的內容匯出到Excel的需求,通過都是匯出單個表頭的Excel檔案,如果存在級聯關係的情況下,也就需要匯出多表頭的場景。今天這篇文章就是分享匯出Excel單表頭或多表頭的實

TextView 實現部分文字改變多種顏色併為段不同顏色的文欄位新增不同點擊事件

今天晨諾星空繼續給大家分享乾貨知識,福利來了,哈哈。如果你喜歡可以點個關注哦,男同胞關注了就是好哥們兒,哈哈,兄弟,有啥問題找我探討,保你解決,沒有什麼是一杯酒解決不了的,如果又就兩杯,哈哈,女同胞的話,除了帶給你點程式設計的營養與乾貨,別的估計也只剩以身相許了

Ext.tree.Panel實現選,

節點 stc head pro nbsp expand category animate 開啟 Extjs 1 var productCategoryTreeLookUpFn = function(callback) { 2 var produc

用戶目錄下編譯mysql源碼,實現主機安裝個mysql實例

.tar.gz 5.7 unix Language working 符號 cmak sam dcm 1.建立用於安裝mysql的用戶目錄:useradd mysql_1; passwd mysql_1; 2.在沒有mysql_1目錄下建立文件夾setup: su - mys

Java Servlet3.0使用getPart/getParts實現檔案和檔案上傳

一、使用工具: (1)Firefox瀏覽器 (2)Eclipse 二、實現單檔案上傳 (1)Servlet 原始碼 package com.servlet; import java.io.IOExce

用HTML,js實現選題,選題,計分,報題功能

現學現做,做一下記錄;採用外部js和css,有彈窗問候,姓名填寫,單選,多選計分,報出錯題; js部分: function greet() { var time=new Date().getHours(); if(time<12) alert("Good mor

通過li-canvas輕鬆實現圖、圖、圓角圖繪製,單行文字、行文字等

Html5新增的canvas是個強大的功能, 估計大家平時都會用到,只是頻率不高,偶爾用它合成圖片,但是如果不進行封裝的話,程式碼會很亂,所以對canvas常用的畫圖、繪製文字、儲存功能進行了封裝,目前還比較滿意,能夠快速完成canvas繪圖任務,從容應對需求變更,只需進行簡單配置即可。 li-

Matlab 畫圖實現兩個個 legend 不同排版

Matlab 提供的 legend 函式,給出的 legend 經常覆蓋了某些曲線(尤其是用 IEEE 模板的時候,一般圖片寬度不超過 315px) 程式: a=linspace(0,2*pi,100); y1=100*sin(a); y2=50*

Java中用Thread.join實現任務分成個任務最後合併結果集

執行任務的具體執行緒類: package com.utils; import java.util.ArrayList; import java.util.List; public class MyThread extends Thread { private Lis

使用Ajaxfileupload外掛分別實現檔案和檔案上傳

一.Ajaxfileupload上傳檔案 首先頁面jsp程式碼:需要引入jquery和ajaxfileupload.js <head> <meta http-equiv="Content-Type" content="text/html; charset

nginx+tomcat實現IP,域名,站點的訪問配置教程

其實這個問題分為兩個子問題來解決: 1.如何實現單IP多tomcat站點 2.對於多域名的多個站點如何通過nginx分發訪問 問題一:解決方案又分為兩種: a.單例項tomcat配置多個host站點 這種方法有一個缺點就是無法分站點除錯,如果一個站點出了問題,關服務進行除錯會停掉所有站點(不過這個方

Nginx+Tomcat實現IP、域名的訪問?

環境說明: 192.168.91.51部署nginx 192.168.91.83部署tomcat1(埠8080,部了appa應用)和tomcat2(埠:9080,部了appb應用) 預期目的: 訪問a.cn,解析到tomcat1上的appa;

Android開發技巧——自定義選的ListView

這篇其實應該是屬於寫自定義單選或多選的ListView的基礎教程,無奈目前許多人對此的實現大多都繞了遠路,反而使得這正規的寫法倒顯得有些技巧性了。 本文原創,轉載請註明在CSDN上的出處: http://blog.csdn.net/maosidiaoxian/article

hadoop實現表和表關聯

補充一個單錶鏈接的例子: ublic class Single { private static class SingleMapper extends Mapper<LongWritable, Text, Text,

android實現一張張圖片壓縮並保持清晰上傳

圖片過大,大於1M的情況下上傳伺服器會很耗時,因此要實現壓縮上傳並且不失真 String mCurrentPhotoPath; Intent openCameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

jacob word 插入

在jacob 中可以通過以下程式碼想word中插入頁首頁尾,但是在操作過程中使用模板中有多頁的時候,只有第一頁可以插入。是因為word 在開啟頁首檢視的時候只打開當前頁的頁首,這是全域性替換文字資訊的程式碼。但是頁首頁尾那塊如果有分割的情況下,只會替換當頁的頁首頁尾。

使用okhttp上傳檔案---檔案檔案

資源連結:http://download.csdn.net/detail/baidu_24278081/9820885 伺服器端程式碼---使用spring mvc @RequestMapping("addPicture")public void addPicture(H