`
isiqi
  • 浏览: 16498129 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Flex 自定义打印控件编写

阅读更多

打印历来是web应用一个比较棘手的问题,幸好flex web应用是运行在flash player上的,flash player可以访问打印机,所以flex 应用可以实现比较强大的打印功能。Flex 自身提供的printjobflexprintjob相对来说用起来不是很方便,对于有严格纸张设置、翻页等打印需求,略显功能不足,因此需要基于printjobflexprintjob来完善flex的打印功能,及自定义打印控件。

本控件核心为:

1PrintManager,打印控制核心类

2IPrintableDocument,打印文档设置,打印文档有3部分组成,分别是:PrintableHeaderPrintableBodyPrintableFooter

因此,开发人员只要设计好printabledocument,重点排版好headerbodyfooter,然后调用PrintManager的打印即可打印printabledocument了。

<print:PrintableDocument

printableBody="{p_body}" printableFooter="{p_footer}" printableHeader="{p_header}">

<print:PrintableHeader width="100%" id="p_header" x="0" y="0" height="81" >

<mx:Label id="pageHeader" text="Sample Accounts" styleName="printTitle" width="100%" textAlign="center"/>

<mx:Label id="cityHeader" text="City Of Somewheretown" width="100%" textAlign="center" />

<mx:Label id="entityHeader" text="General Accounts" width="100%" textAlign="center"/>

</print:PrintableHeader>

<print:PrintableBody id="p_body" width="100%" bottom = "28" x="0" top="81">

<mx:PrintAdvancedDataGrid id="accountsDataGrid" designViewDataType="flat"

dataProvider="{accounts}" horizontalGridLines="false" verticalGridLines="false"

width="100%" height="100%" borderStyle="none" sortExpertMode="true" headerHeight="0"

rowHeight="30">

<mx:columns>

<mx:AdvancedDataGridColumn headerText="Account Number" dataField="account" textAlign="center" width="100"/>

<mx:AdvancedDataGridColumn headerText="Control Account" dataField="control" textAlign="center" width="100"/>

<mx:AdvancedDataGridColumn headerText="Description" dataField="description" width="300"/>

</mx:columns>

</mx:PrintAdvancedDataGrid>

</print:PrintableBody>

<print:PrintableFooter id="p_footer" width="100%" height="28" bottom="0" left="0" printType="perpage">

<mx:Label text="Prepared by: Authorname" width="33%" textAlign="center"/>

<mx:Label text="Page {pageNumber} of {pageCount}" width="34%" textAlign="right"/>

<mx:Label id="pageFooter" text="Sample Accounts" width="33%"/>

</print:PrintableFooter>

</print:PrintableDocument>

附上控件核心类的相关代码。

1PrintManager

public class PrintManager

{

public function PrintManager()

{

}

public function print(document:IPrintableDocument, parent:UIComponent = null):Boolean

{

var printJob:PrintJob = new PrintJob();

if (parent != null)

parent.addChild(document.displayObject());

var printed:Boolean = printInternal(document, printJob);

if (parent != null)

parent.removeChild(document.displayObject());

return printed;

}

private function unscaleDocument(document:IPrintableDocument):void

{

document.scaleX = 1.0;

document.scaleY = 1.0;

document.validateNow();

}

/**

* adjust print orientation

* scale the printdocument

*/

private function rotateDocumentForPaperOrientation(document:IPrintableDocument, printJob:PrintJob):void

{

document.x = 0;

document.y = 0;

var scaleFactor:Number = 1.0;

//

document.scaleX = scaleFactor;

document.scaleY = scaleFactor;

document.validateNow();

}

private function printPage(document:IPrintableDocument, printJob:PrintJob):void

{

var width:Number = document.desiredWidth;

var height:Number = document.desiredHeight;

var page:Sprite = Sprite(document);

var printableArea:Rectangle = new Rectangle(0, 0, width, height);

printJob.addPage(page, printableArea);

}

public function printInternal(document:IPrintableDocument, printJob:PrintJob):Boolean

{

//start printer

if (!printJob.start()) {

return false;

}

document.moveToFirstPage();

unscaleDocument(document);

//adjust paper orientation

rotateDocumentForPaperOrientation(document, printJob);

//add first print page

printPage(document, printJob);

while(document.validNextPage)

{

document.nextPage();

printPage(document, printJob);

}

printJob.send();

Courier Ne

分享到:
评论

相关推荐

    Flex开发自定义控件

    #### 二、Flex自定义控件概述 在Flex中,自定义控件是指根据特定需求构建的新控件,这些控件可以基于现有的Flex标准控件进行扩展,也可以完全从头开始创建。自定义控件的主要优势在于能够提供更符合特定业务场景的...

    Flex4.0自定义控件

    5. **文档编写**:为自定义控件编写详细的使用文档,方便其他开发人员快速了解并使用。 #### 五、结语 自定义控件是提高Flex应用灵活性和扩展性的有效方式。通过本文的学习,相信您已经掌握了Flex4.0环境下自定义...

    flex 自定义组件

    Flex自定义组件是Adobe Flex框架中的一个重要特性,它允许开发者创建具有特定功能和外观的UI元素,以满足项目中独特的用户界面需求。Flex是一个开源的、基于MXML和ActionScript的开发框架,主要用于构建富互联网应用...

    自定义时间控件

    在 Flex 开发中,自定义时间控件是一个常见的需求,特别是在构建用户界面时需要高度定制化的时间选择功能。...在实际项目中,自定义控件不仅提升了应用的视觉效果,还能提高用户的操作效率,从而增强整个应用的价值。

    flex 自定义 datagrid 列头带组合框进行过滤

    这个主题——"flex 自定义 datagrid 列头带组合框进行过滤",涉及到的关键知识点包括Flex组件定制、DataGrid列头的扩展以及ComboBox控件的使用。 1. Flex组件定制: 在Flex中,我们可以使用MXML和ActionScript来...

    flex通用分页控件

    4. 自定义样式:为了满足不同设计需求,分页控件应支持自定义样式和主题,包括按钮样式、字体颜色、背景色等。 5. 动态加载:对于大数据集,分页控件可以采用懒加载策略,即只在用户翻页时加载对应页的数据,减少...

    flex 时间选择控件

    Flex时间选择控件是一种在Adobe Flex应用程序中用于用户交互,帮助用户方便地选取特定时间的组件。这个控件通常被嵌入到用户界面中,允许用户以小时、分钟和(可能的话)秒为单位选择时间。它提高了用户体验,因为...

    flex上传控件,带进度、时间、速度显示

    在Flex中,我们可以自定义控件以满足特定的需求,比如在上传文件时展示进度、剩余时间和上传速度。 该控件的核心功能包括: 1. **文件选择**:用户可以通过控件选择本地文件进行上传,通常通过浏览器的文件选择...

    flex多文件上传控件(flex源码)

    了解以上知识点后,开发者可以对这个Flex多文件上传控件进行自定义,以适应特定项目的需求,如添加权限验证、文件预览功能、多线程上传等。总的来说,这个控件提供了一个灵活的基础,帮助开发者快速实现高效的文件...

    flex分页控件的使用

    在Flex中,我们可以自定义一个分页控件来实现这些功能。例如,上述代码展示了如何创建一个简单的分页控件。在这个示例中,我们定义了一个名为`PageChangeEvent`的自定义事件类,它扩展了`flash.events.Event`,并...

    Flex中如何创建自定义排序DataGrid控件的例子

    本教程将详细讲解如何在Flex中创建一个自定义排序的DataGrid控件。 首先,我们需要了解Flex DataGrid的基本结构。DataGrid控件通常与一个数据提供者关联,这个提供者可以是ArrayCollection、XMLListCollection或...

    FLEX4控件学习例子

    5. **自定义控件**:Flex 4允许开发者创建自定义组件,扩展Spark组件库。通过实例,你可以学习如何利用MXML和ActionScript来构建和皮肤化自己的组件。 6. **事件处理**:掌握事件监听和事件传播机制对于编写响应...

    flex的时间控件用法

    在Flex编程中,时间控件是开发者经常使用的工具,用于实现定时执行某些任务或创建动态交互效果。本篇文章将深入探讨“flex的时间控件用法”,特别是基于Timer控件的一个简单示例,非常适合初学者学习。 Timer控件是...

    Flex dataGrid 自定义显示列

    Flex DataGrid是MXML组件库中的一个控件,它允许开发者以网格形式展示数据集合。这种组件特别适用于处理大量结构化数据,如表格或数据库记录。DataGrid能够自动绑定到数据源,并根据数据字段创建列,但往往我们需要...

    flex的仪表盘控件

    在本案例中,"flex的仪表盘控件"指的是使用Flex技术开发的用于显示数据指标或KPIs的用户界面组件,类似于汽车仪表盘上的速度计、油表等。这种控件允许开发者创建具有高度自定义样式和功能的可视化展示,以便用户可以...

    asp.net基于Flex的上传控件(多文件)

    1. **创建Flex组件**:首先,你需要在Flex环境中创建一个自定义的上传控件。这个控件应该包含一个文件选择对话框,用户可以从中选择多个文件进行上传。控件还需要一个进度条组件,以实时更新每个文件的上传进度。 2...

    Flex 写的一个combox多选控件

    2. **自定义下拉列表**:通过覆盖dropDown属性,我们可以创建一个自定义的List组件,其中的itemRenderer使用我们之前编写的HgCheckBox.as。这样,每个列表项都会显示一个复选框。 3. **处理多选逻辑**:当用户在...

    flex 街景控件

    Flex的组件库强大,可以创建复杂的用户界面,而街景控件就是其中的一种自定义组件。 二、街景控件原理 街景控件的核心是通过360度全景图像来模拟真实的街景环境。这种技术通常涉及到图像拼接、视角转换和交互控制等...

    flex4 温度计控件

    2. **自定义组件**:在Flex中,开发者可以通过继承UIComponent或现有的Spark组件来创建自定义控件。在这个案例中,温度计控件可能基于一个基础的图形元素,如Rectangle或Path,然后添加温度指针、刻度线、数值显示等...

    flex 自动完成控件(类似google输入框)

    在Flex编程中,创建一个自动完成控件,也称为下拉提示或自动填充,能够极大地提升用户体验,尤其是在处理大量可选项时。这个功能类似于Google的搜索框,它会在用户输入时动态显示匹配的建议列表。以下是一些关于如何...

Global site tag (gtag.js) - Google Analytics