=波波日志 > flash/flex/fcs/AIR > 26.8.打印选择项=

[转]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,演示了各种缩放类型的效果。
类别:flash/flex/fcs/AIR 作者:转载 日期:2010-04-30 【评论:0】 
 
暂时没有评论!
发表留言
  • *昵称:
  • 头像:
  • 电子邮件: [留下您的邮件,方便管理员回复您。]
  • 个人网站: *验证码:
声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载或引用的作品侵犯了您的权利,请通知我们,我们会及时删除!
Powered by showbo,©2012WEB编程网桂ICP备05005887号 京公网安备1101055090