在Flex中,下面将要介绍的两个类是实现打印功能的关键。FlexPrintjob:用于打印对象。对象可以是容器,也可以是自定义组件,都用于显示打印材料。这个类可以自动把一个对象分割到多个页面上,并且调整输出的缩放比例以适应页面的尺寸。PrintDataGrid:是DataGrid控件的派生类,它的外观和功能更适合打印。PrintDataGrid类包含许多属性和方法,用于打印包含多页数据的网格。用Flex进行打印的基本过程如下所示。(1)创建FlexPrintjob类的一个实例。(2)使用一个布尔变量控制要打印的图片格式,例如,控制是打印矢量图还是打印位图。(3)调用FlexPrintjob类的start()方法启动打印任务,这时会弹出提示窗口,询问是否开始打印,选择确定,将开始打印。(4)调用FlexPrintjob类的addObject()方法添加待打印的对象,并添加这个打印对象到现实列表中。(5)调用FlexPrintjob类的send()方法把打印任务发送给打印机,对添加的打印页面进行打印。(6)在打印结束后清除不再使用的对象。实现Flex打印功能基本步骤。例如,打印一个包含Label和Button控件的Group容器,可以通过以下步骤完成。(1)新建一个Flex项目,命名为PrintExample,在项目的src目录下新建一个MXML应用程序PrintExample1。(2)在PrintExample1.mxml文件中输入待打印的Group容器代码,如下所示:s:Groupid=printContainerx=100y=50height=180width=120s:Rectwidth=120height=180s:fills:SolidColorcolor=red//s:fill/s:Rects:Labelx=20y=20text=第一个打印页面/s:Buttonx=20y=50label=打印click=doPrint()//s:Group(3)doPrint()方法的代码如下所示:fx:Script![CDATA[importmx.printing.FlexPrintJob;//导入mx.printing.FlexPrintJob类privatefunctiondoPrint():void{varpj:FlexPrintJob=newFlexPrintJob();//新建FlexPrintJob对象if(pj.start()!=true){return;}pj.addObject(printContainer);pj.send();}]]/fx:Script(4)连接打印机,运行PrintExample1.mxml文件,结果如图所示。本节通过打印图书信息的实例说明使用PrintDataGrid类的方法。在PrintExamp项目中新建PrintExample2.mxml文件,输入代码。程序执行结果如图所示。图14.3显示的是Form表单中的内容,在doPrint()函数中打印Group容器的内容,单击“打印”按钮后打印出的内容如图所示。联系人:郑老师zheng@phei.com.cn书名作者出版时间Flex3开发实践C教程设计VisualC++应用实践计算机C语言教程郑阿奇谭浩强郑阿奇BruceEckel祝因2010年7月2009年2月2009年9月2005年2月2007年10月Java编程思想在PrintExample项目中新建一个MXML自定义组件,命名为PrintView,在组件中定义一个Group容器,代码如下:?xmlversion=1.0encoding=utf-8?s:Groupxmlns:fx=:s=library://ns.adobe.com/flex/sparkxmlns:mx=library://ns.adobe.com/flex/mxwidth=400height=300s:Labelid=contact/s:PrintDataGridid=myPrintDGwidth=100%height=100%//s:Group在PrintExample项目中新建一个PrintExample3.mxml文件,本程序中仍然使用PrintExample2.mxml中的From表单和doPrint()函数,代码所示。在用addObject()方法把对象添加到打印任务时,有五个尺寸格式以供选择。所有选项都是mx.printing.FlexPrintjobScaleType类的静态常数。为了使用这些选项,需要导入该类,然后以FlexPrintjobScaleType.CONSTANT形式使用这些常数。这些选项如下所示。(1)MATCH_WIDTH:缩放对象用于填充可用页面宽度。默认设置是,如果得到的对象高度超出页面高度,则输出会扩展到多个页面。语法格式如下:publicstaticconstMATCH_WIDTH:String=matchWidth(2)MACTH_HEIGHT:缩放对象用于填充可用页面高度。如果得到的对象宽度超出页面宽度,则输出会扩展到多个页面。语法格式如下:publicstaticconstMATCH_HEIGHT:String=matchHeight(3)SHOW_ALL:缩放对象用于适合在单个页面中填充一个尺寸,即选择MATCH_WIDTH或MATCH_HEIGHT缩放类型中较小的值。语法格式如下:publicstaticconstSHOW_ALL:String=showAll(4)FILL_PAGE:将对象缩放到至少一整页,即选择较大的MATCH_WIDTH或MATCH_HEIGHT缩放类型。语法格式如下:publicstaticconstFILL_PAGE:String=fillPage(5)NONE:不要缩放输出。打印页面的尺寸与屏幕上的对象相同。如果对象高度、宽度或两个尺寸都超出页面宽度或高度,则输出会扩展到多个页面中。语法格式如下:publicstaticconstSHOW_ALL:String=showAll“例如,将14.2.2节中的示例按照屏幕显示的尺寸打印输出。新建PrintExample4.mxml文件,在PrintExample1.mxml代码中进行如下几项修改。(1)添加导入FlexPrintjobScaleType类的代码如下所示:importmx.printing.FlexPrintJobScaleType;(2)修改addObject方法,将常数设为NONE如下所示:pj.addObject(printContainer,FlexPrintJobScaleType.NONE);打印后的效果如图14.5所示。