26.9.格式化打印内容

26.9.1. 问题
我想按指定的格式打印内容
26.9.2. 解决办法
构建自定义打印渲染组件来格式化打印内容
26.9.3. 讨论
通常,你想要打印输出的内容并不同于在应用程序中显示出的那样。你可能希望创建一个不通过程序展现给用户的可打印应用程序对象版本或生成数据报告。打印渲染器就是为此目的而设计的,它是一个输出指定打印内容的组件。

在26.8节的BasicPrintJob.mxml例子中,你可能不想打印page标签或文本框控件的边框,也就是你可能只想打印文本框中的输入内容,就像文字处理器生成的那样,填充页面而不缩放文字。要打印出文本块,使用下面的BasicTextRenderer.mxml组件:
+展开
-XML
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml"
backgroundColor="0xffffff">

<mx:String id="textToPrint" />
<mx:Text width="100%text="{textToPrint}" />
</mx:Canvas>

当你使用打印渲染器来格式化输出时,首先要添加渲染器到显示列表以便Flex对组件进行可视化方面的布局:
+展开
-ActionScript
public function print():void
{
var printJob:FlexPrintJob = new FlexPrintJob();
if (printJob.start())
{
var printRenderer:BasicTextRenderer =
new BasicTextRenderer();
printRenderer.width = printJob.pageWidth;
printRenderer.textToPrint = page1.text;
printRenderer.visible = false;
Application.application.addChild(printRenderer);
printJob.addObject(printRenderer);
printJob.send();
Application.application.removeChild(printRenderer);
}
}

我们注意到这个例子使用了打印任务对象的pageWidth属性。pageWidth和pageHeight 属性是在start方法返回时被设置的。当编写打印渲染器组件,当组件大小变化时需要注意这些属性值。通过这些属性,你可以确定即便更换打印机或纸张大小的情况下你的渲染器仍能正常工作在纵向和横向模式。

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


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