作者LZN (秋)
看板Flash
标题[问题] Flex使用FlexPrintJob来列印的问题
时间Thu Nov 12 22:32:45 2009
我想要列印的画面是宽度大於高度的样式,为了方便使用者不用去
设定印表机为横向列印,所以我打算自己将画面旋转90度後再送到
印表机去列印。
目前使用FlexPrintJob,以及设定FlexPrintJobScaleType.SHOW_ALL
要将输出的画面占满整张A4。但是结果却是若不旋转,则画面会放大到
A4能容纳的范围,若旋转90度後,画面却没有放大到A4的范围,不知道
是哪边没有处理好,烦请各位前辈指点迷津 谢谢 ^^
范例档
http://140.136.149.89/PrintTest/PrintTest.swf
(可按右键view source, 最好使用Fineprint等软体来预览列印结果,节省纸张)
部分程式码如下
private function print(rotate:Boolean = false):void{
var printJob:FlexPrintJob = new FlexPrintJob();
//旋转会造成中文字消失,因此先将画面撷取下来後再旋转
var bitMap:Bitmap;
var bitMapData:BitmapData;
var img:Image = new Image();
//透过ImageSnapshot把我要列印的画面抓下来
bitMapData = ImageSnapshot.captureBitmapData(myPanel);
bitMap = new Bitmap(bitMapData);
//设定位移与旋转角度
var matrix:Matrix = new Matrix();
if (rotate){
matrix.translate(0,-bitMap.height);
matrix.rotate(2 * Math.PI * (90 / 360));
}
img.source = bitMap;
img.width = bitMap.width;
img.height = bitMap.height;
img.scaleContent = true;
img.transform.matrix = matrix;
this.addChild(img);
printJob.start();
printJob.addObject(img, FlexPrintJobScaleType.SHOW_ALL);
printJob.send();
this.removeChild(img);
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.32.117.168