`
xo_tobacoo
  • 浏览: 385270 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

flex打印文档

阅读更多

因为打印往往需要动态设置数值,并且存入后台数据库,最好的方式是使用官方的打印api,最最好的方式是使用html和官方打印flexapi结合,as+js+html+css+flex可以完美预览,数据修改和打印页面设置。富客户端嵌入了webkit内核,因此as和js通信完全没问题。需要分页可以仔细研究下flexpaper

 

下面的组件多多少少有些局限性,或者没法在air中预览,或者不能动态修改被打印数据,或者需要在服务器端进行格式转换,或者要装插件,问题多多:

1 基于JasperReports的打印http://Flex.org/software/component/xviewer

2 FlexReport: http://Flexreport.riaforge.org

3 AlivePDF: http://code.google.com/p/alivepdf

4 flexpaper  http://flexpaper.devaldi.com/docs.html

 

最简单的例子如下,alivepdf仅是用来保存pdf格式的,如果需要其他格式excel,word,似乎只能在服务器端做了:

<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
					   xmlns:s="library://ns.adobe.com/flex/spark"
					   xmlns:mx="library://ns.adobe.com/flex/mx"
					   width="1200" height="700"
					    creationComplete="init()">
	<fx:Declarations>
		<!-- Place non-visual elements (e.g., services, value objects) here -->
	</fx:Declarations>
	<fx:Script>
		<![CDATA[
			import mx.collections.ArrayCollection;
			import mx.printing.FlexPrintJob;
			import flash.sampler.NewObjectSample;
			import flash.utils.ByteArray;

			import mx.collections.ArrayCollection;
			import mx.controls.HTML;
			import mx.events.FlexEvent;

			import org.alivepdf.annotations.Annotation;
			import org.alivepdf.annotations.AnnotationType;
			import org.alivepdf.annotations.TextAnnotation;
			import org.alivepdf.colors.CMYKColor;
			import org.alivepdf.colors.RGBColor;
			import org.alivepdf.colors.SpotColor;
			import org.alivepdf.data.Grid;
			import org.alivepdf.data.GridColumn;
			import org.alivepdf.events.CharacterEvent;
			import org.alivepdf.fonts.CodePage;
			import org.alivepdf.fonts.CoreFont;
			import org.alivepdf.fonts.EmbeddedFont;
			import org.alivepdf.fonts.FontFamily;
			import org.alivepdf.fonts.IFont;
			import org.alivepdf.images.ColorSpace;
			import org.alivepdf.layout.Align;
			import org.alivepdf.layout.Mode;
			import org.alivepdf.layout.Orientation;
			import org.alivepdf.layout.Position;
			import org.alivepdf.layout.Resize;
			import org.alivepdf.layout.Size;
			import org.alivepdf.layout.Unit;
			import org.alivepdf.links.HTTPLink;
			import org.alivepdf.links.Highlight;
			import org.alivepdf.links.ILink;
			import org.alivepdf.links.InternalLink;
			import org.alivepdf.pages.Page;
			import org.alivepdf.pdf.PDF;
			import org.alivepdf.saving.Method;
			import org.alivepdf.display.Display;
			import org.alivepdf.layout.Layout;


			[Bindable]
			public var dataSource:ArrayCollection = new ArrayCollection();

			private var totalRecords:Number = 15;

			private function init():void {
				pageMenu.selectedIndex=1;
				var page:Object=pageMenu.selectedItem as Object;
				containerBox.width=page.width;
				containerBox.height=page.height;
			}

			private function doPrint():void {
				var printJob:FlexPrintJob = new FlexPrintJob();
				printJob.printAsBitmap=false;   //提高文字清晰度
				if (printJob.start()) {
					printJob.addObject(containerBox);
					printJob.send();
				}
			}
			public var pages:ArrayCollection = new ArrayCollection(
				[
					{index:3,label:"A3",width:Size.A3.dimensions[0],height:Size.A3.dimensions[1]},
					{index:4,label:"A4",width:Size.A4.dimensions[0],height:Size.A4.dimensions[1]},
					{index:5,label:"A5",width:Size.A5.dimensions[0],height:Size.A5.dimensions[1]} ]);
			private function changePageHandler(event:Event):void {
				var page:Object=DropDownList(event.target).selectedItem as Object;
				pageDescription.text=page.width+"*"+page.height;
				containerBox.width=page.width;
				containerBox.height=page.height;

			}

			protected function directClickHandler(event:MouseEvent):void
			{
				if(direct.label=="方向:横"){
					direct.label="方向:竖";
					var page:Object=pageMenu.selectedItem as Object;
					containerBox.width=page.height;
					containerBox.height=page.width;
				}else{
					direct.label="方向:横";
					var page:Object=pageMenu.selectedItem as Object;
					pageDescription.text=page.data;
					containerBox.width=page.width;
					containerBox.height=page.height;
				}
			}
			[Embed( source="../assets/Capture it.ttf", mimeType="application/octet-stream" )]
			private var fontStream:Class;
			private var file:File;
			private var b:ByteArray = new ByteArray();

			private function createPDF():void
			{
				var t:ByteArray = new fontStream();
				var ty:Array=Size.A4.dimensions;
				trace(Size.A4.dimensions.toString());
				trace(Size.A4.inchesSize.toString());
				trace(Size.A4.mmSize.toString());
				var uf:IFont = new CoreFont ( FontFamily.ARIAL );
				var p:PDF = new PDF( Orientation.PORTRAIT, Unit.MM, Size.A4 );
				p.setDisplayMode( Display.FULL_PAGE, Layout.SINGLE_PAGE );
				p.addPage();

				p.textStyle( new RGBColor(0x990000), 1 );
				p.setFont(uf, 9);

				p.addImage( this.printData );


				var f:FileStream = new FileStream();
				file = File.desktopDirectory.resolvePath("exported.pdf");
				f.open( file, FileMode.WRITE);
				var bytes:ByteArray = p.save( Method.LOCAL );
				f.writeBytes(bytes);
				f.close();
			}

		]]>
	</fx:Script>
 <mx:VBox id="topMenu" width="100%" height="100%" horizontalScrollPolicy="auto" verticalScrollPolicy="auto">

	<mx:ApplicationControlBar id="dockedBar"
							  dock="true" paddingTop="0" paddingBottom="0">


		<mx:HBox paddingBottom="5" verticalAlign="middle" horizontalAlign="left"
				 paddingTop="5">
			<mx:Label text="纸型" />
			<s:DropDownList id="pageMenu" labelField="label" dataProvider="{pages}" textAlign="center" width="114" color="0x000000"
							 change="changePageHandler(event);" selectedIndex="0" height="39"/>
			<mx:Label textAlign="center" id="pageDescription" text="" />
			<mx:LinkButton  id="direct" click="directClickHandler(event)" label="方向:横"  />
			<mx:Label text="左边距" />
			<mx:HSlider id="lBar" width="60"  minimum="0" maximum="100" value="1" snapInterval="1" liveDragging="true" />
			<mx:Label text="右边距" />
			<mx:HSlider id="rBar" width="60"  minimum="0" maximum="100" value="1" snapInterval="1" liveDragging="true" />
			<mx:Label text="上边距" />
			<mx:HSlider id="tBar" width="60"  minimum="0" maximum="100" value="1" snapInterval="1" liveDragging="true" />
			<mx:Label text="下边距" />
			<mx:HSlider id="bBar" width="60"  minimum="0" maximum="100" value="1" snapInterval="1" liveDragging="true" />

			<mx:Spacer width="50"/>
			<mx:Button  label="另存为PDF" click="createPDF()" />
			<mx:Button label="Print" click="doPrint()"/>
		</mx:HBox>
	</mx:ApplicationControlBar>
	<mx:Panel layout="absolute" horizontalScrollPolicy="off"  title="打印预览区域" paddingBottom="35" paddingLeft="30" paddingRight="30"  paddingTop="60" horizontalAlign="center" width="100%" height="100%" >

		<mx:Box y="30" horizontalScrollPolicy="off" id="containerBox" removedEffect="Resize"
			  borderStyle="solid"
			  horizontalAlign="center" verticalAlign="middle"
			   horizontalCenter="0"
			  paddingLeft="{lBar.value}"
			  paddingRight="{rBar.value}"
			  paddingTop="{tBar.value}"
			  paddingBottom="{bBar.value}"
			  >

		<mx:Box borderStyle="solid" borderColor="0xEEEEEE"  id="printData" borderAlpha="10" borderVisible="false" width="100%" height="100%">

	<mx:HTML width="100%" height="100%" location="template/CustomerInfo.htm">

	</mx:HTML>

		</mx:Box>

	    </mx:Box>


	</mx:Panel>

 </mx:VBox>
</s:WindowedApplication>

 

分享到:
评论
1 楼 glovebx 2010-07-07  
支持针式打印机不?

相关推荐

    Flex在线预览文档组件FlexPaper_swc

    Flex用于在线文档pdf、word的预览组件FlexPaper_swc,含sdk3.5和sdk4.0两个版本。

    flexpaper Flex中显示PDF功能

    FlexPaper是一个开源的轻量级文档显示组件,被设计用来与PDF2SWF一起使用,使在Flex中显示PDF成为可能。它可以被当做Flex的library来使用。

    Flex:Web报表引擎——MyReport 2.3.0.0 + 免Flex开发集成版

    * 相关说明文档和示例数据。 注: * Flex示例工程,用Adobe Flash Builder 4开发环境打开,用Flex SDK 4.1进行编译。 * .Net示例工程,用Visual Studio 2010开发环境打开。 * 只需少量工作就能把MyReport整合,获得...

    flex+gcc+tools

    2.打开一个C++源文件,打印出所有以上的记号。 3.* 选作部分:为了提高C++源程序的可读性,C++程序在书写过程中加入了空行、空格、缩进、注释等。假设你想牺牲可读性,以节省磁盘空间,那么你可以存贮一个删除了所有...

    Flex:Web报表引擎——MyReport 2.3.6.0 + 免Flex开发集成版

    * MyReport免Flex开发集成版,适用于以传统html构建的系统,希望集成MyReport报表引擎的报表预览、打印和报表设计功能,并且不需要进 行Flex相关的二次开发的用户。 * Flex示例工程和.Net示例工程。 * 相关说明文档...

    AcroRd32帮助文档

    flex重要资源,下载了不后悔,不下载才后悔,

    flex3的cookbook书籍完整版dpf(包含目录)

    flex3的cookbook书籍完整版dpf(包含目录),目录是我花了两个多小时自己整理的,希望对大家有帮助。 目录: 第一章.Flex与ActionScript基础(3) 1.1节.用FlexBuilder创建Flex项目 1.2节.用FlexBuilder创建Flex库项目 ...

    OculusMeetsAR:一个允许在AR应用程序中使用Oculus Rift DK2,两个Logitech C310网络摄像头(带鱼眼镜头)和OptiTrack Flex 3跟踪系统的库

    OculusMeetsAR是一个在增强现实应用程序中使用Oculus Rift DK2头戴式显示器,两个Logitech C310网络摄像头(带鱼眼镜头)和Natural Point OptiTrack Flex 3跟踪硬件的库。 一些示例视频: 请访问我们的Wiki获取...

    百度地图离线API 2.0(含示例,可完全断网访问)

    2.包含拉框放大,测距,画线,打印等功能(已修改工具源码,支持右键取消放大,测距手势) 3.自定缩放级别显示指定标签 4.快速定位及隐藏指定类型 注意事项: 1.该示例不包含地图瓦片,所以访问时无背景(可以点击切片/...

    基于Java web的水费缴纳管理系统.doc

    该系统实现了信息查询、人员信息管理、报表生成和打印等功能。用户只要使用IE浏览器访问相关站点,输入正确的用户名和密码成功登陆后,便可查询用水情况和其他相关信息。对管理员来说使用起来也非常的方便快捷,可以...

    富士_MICREX-SX系列可编程控制器SPM样本.pdf

    打印程序时,除图纸编号、日期、页码及图纸框外,还能打印公司名称图标及注释语句。 3).仿真功能 ·使用Expert(D300win)内置的仿真功能,不必实机使用便可以进行程序的动作测试。 4).功能模块支持功能/POD关联功能...

    Altium Designer Beta 19.0.10完整版安装包+安装教程+和谐文件

    修复了PCB 3D打印输出的打印预览为空白的问题。 25760 使用ActiveBOM文档时,粘贴功能已得到改进,并且至少选择了一个目标单元格。 25801 修复了无法在“存储”面板(BC:8643)中成功重命名设计文件的问题。 26014 ...

    ActionScript开发人员指南中文版

    读取外部XML文档 在ActionScript中使用XML的示例:从Internet加载RSS数据 第章:使用本机JSON功能 JSONAPI概述 定义自定义JSON行为 第章:处理事件 事件处理基础知识 ActionScript事件处理与早期版本事件处理的不同之...

    ActionScript开发技术大全

    2.2.2在FlexBuilder3下创建ActionScript3.0项目 15 2.3服务端部署 16 2.3.1安装JDK 16 2.3.2安装Tomcat服务器 18 2.3.3Tomcat集成RED5服务器 20 2.4安装VisualBasic6.0 22 2.5小结 23 第3章ActionScript3.0语法 24 ...

    第三代移动WEB内核小程序风口-逐浪CMS2 x3.9.3全面发布

    ■基于FLex弹性布局重写前端(OA平台因要支持传统业务暂不涉及)。 ■提供全新的Bootstrap 4.0技术文档,并获得Bootstrap官方认同,访问http://code.z01.com/v4 ■前后端全面引入scss(sass)技术,与Bootstrap官方...

    asp.net知识库

    Asp.Net(C#)利用XPath解析XML文档示例 XSL .Net框架下的XSLT转换技术简介 一个XSLT的简单例子 XSLXSLT板主题整理 xsl入门的好文章 新手学习XSL的好东西 XSL语法介绍 XSL学习心得 - 调用属性值 XSLT与XML转换的详细...

    vc代码合集

    2012-06-11 09:50 3,412,722 内部文件非内部程序员禁止访问谢谢1234567890123456789能够实现文件的多选,统一上传,从而实现文件的批量上传Flex多文件上传源码VS2005.rar 2012-06-11 10:08 1,481,225 几个C语言小...

    集成运放参数测试仪[2005年电子大赛一等奖.doc

    扫频信号通过对30MHz的FPGA系统时钟进行分频和外部锁相环(FPGA采用 FLEX10K10无内部锁相环)倍频,产生高频率稳定度、幅值稳定度的扫频信号。放大器参 数测量参照GB3442- 82标准,低频信号幅度的测量采取AD高速采样...

    Crystal Reports 2008 水晶报表官方中文傻瓜教程(翻译).pdf

    == 如果喜欢英文文档的朋友 == Crystal-Reports-2008-For-Dummies.pdf == == 链接: == http://download.csdn.net/download/a6566232/4627865 ======================================================= Crystal ...

Global site tag (gtag.js) - Google Analytics