26.8.打印选择项

26.8.1. 问题
我想打印应用程序.
26.8.2. 解决办法
使用mx.printing包中的相关类,格式化和生成打印输出。
26.8.3. 讨论
mx.printing包有多个实现类用户生成打印输出。例如FlexPrintJob类定义一个打印任务,添加选项到任务中,发送任务给打印机。下面的BasicPrintJob.mxml例子创建一个打印任务,添加两页输出内容,发送此任务给打印机:
+展开
-XML
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxmlwidth="400height="300">
<mx:Script>
<![CDATA[
import mx.printing.FlexPrintJob;
public function print():void
{
var printJob:FlexPrintJob = new FlexPrintJob();
if (printJob.start())
{
printJob.addObject(pageContainer1);
printJob.addObject(pageContainer2);
printJob.send();
}
}

]]>
</mx:Script>
<mx:VBox width="380height="260verticalCenter="-20"
horizontalCenter="0">

<mx:VBox id="pageContainer1">
<mx:Label text="Page 1" />
<mx:TextArea id="page1width="100%height="100%" />
</mx:VBox>
<mx:VBox id="pageContainer2">
<mx:Label text="page 2" />
<mx:TextArea id="page2width="100%height="100%" />
</mx:VBox>
</mx:VBox>
<mx:Button bottom="5right="10label="Print"
click="print();" />

当start方法被调用时,操作系统会显示一个打印对话框。执行会被暂停直到用户完成打印任务的配置。如果用户决定取消这次打印任务,start方法将返回false。否则此函数会调用addObject方法添加文本框到打印任务中,并调用send方法发送任务到打印机。

每次调用addObject,被添加项及其子对象都会被放置在新的一页里。如上面的打印例子,pageContainer1和pageContainer2被打印在不同的页面里。

addObject方法还接受可选的参数告诉打印机任务如何缩放添加的打印项。如果打印项太大,打印机任务将会渲染到多个页面。默认下打印项会根据页面宽度进行缩放。但是其他选项参数也是可用的,这些定义好的静态常量都在FlexPrintJobScaleType类中。你可以,比如缩放图表以匹配单个页面的高度:
+展开
-ActionScript
Public function print():void
{
if (printJob.start())
{
printJob.addObject(columnChart,
FlexPrintJobScaleType.MATCH_HEIGHT);
printJob.send();
}
}

如果这个图表太宽,超出的部分会被打印到新页面上,作为一个例子,ScaleExample.mxml,演示了各种缩放类型的效果。

加支付宝好友偷能量挖...


评论(0)网络
阅读(98)喜欢(0)flash/flex/fcs/AIR