`
xo_tobacoo
  • 浏览: 390823 次
  • 性别: 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 打印源代码

    Flex打印源代码主要涉及到Adobe Flex这一跨平台的富互联网应用程序(RIA)开发框架。Flex是基于ActionScript编程语言和MXML标记语言的,用于构建在Web浏览器中运行的交互式用户界面。在Flex中实现打印功能,开发者...

    Flex 打印例子官方的哦

    Flex打印技术是Adobe Flex框架中的一个重要组成部分,它允许开发者创建应用程序来打印内容或者与打印机进行交互。Flex是一款基于ActionScript 3.0的开源框架,主要用于构建富互联网应用程序(RIA)。在Flex中,打印...

    Flex实现打印预览

    Flex是Adobe公司开发的一种基于ActionScript 3.0的...综上所述,实现Flex的打印预览功能涉及到对Flex打印API的理解、预览组件的创建以及用户交互的实现。通过这些步骤,你可以为用户提供一个方便且直观的打印预览体验。

    Flex4中文帮助文档

    - `print.css`:打印样式表,确保文档在打印时也能保持良好的格式。 - `localeSpecific.css`:可能包含针对不同语言和文化的特定样式调整。 - `popup.css`:可能用于弹出窗口或提示框的样式定义。 - `content-ie...

    flex 打印预览

    1. Flex打印服务: Flex提供了PrintJob类,该类是打印服务的基础,允许开发者创建、配置和执行打印任务。通过实例化PrintJob对象,可以设置打印参数,如页边距、纸张大小、方向等。 2. 打印预览原理: Flex打印预览...

    FLEX alive pdf 打印pdf

    标题中的"FLEX alive pdf 打印pdf"指的是使用Adobe Flex技术来实现PDF文档的打印功能。Flex是一种基于ActionScript 3.0的开源框架,用于构建富互联网应用程序(RIA)。AlivePDF是Flex的一个库,它允许开发人员在...

    ArcGis For Flex 打印

    本文将深入探讨ArcGIS for Flex中的“打印”功能,以及如何在项目中实现这一功能。 首先,我们要理解ArcGIS for Flex的打印功能是如何工作的。打印在GIS应用中扮演着重要的角色,它允许用户将地图视图导出为物理...

    flex的一个打印测试

    Flex打印技术是Adobe Flex框架中的一个重要特性,它允许开发者创建应用程序,使得用户可以直接从Flex界面进行文档打印。Flex是基于ActionScript和MXML的开源框架,主要用于构建富互联网应用程序(RIA)。在本“flex...

    flex4在线文档

    这两种格式都是用于文档打印和分发的标准格式,支持离线阅读和保留原始文档的布局和样式。 "FlexPaper_SDK4.swc"是FlexPaper SDK的库文件,它是一个强大的文档查看器,专为Flex和Flash平台设计。FlexPaper能够展示...

    Flex在线预览文档组件FlexPaper_swc

    FlexPaper是一款功能强大的在线文档预览组件,专为Flex开发者设计,用于在Web应用程序中实现PDF和Word文档的无缝预览。本组件分为两个版本,即SDK3.5和SDK4.0,以适应不同Flex开发环境的需求。 1. Flex平台介绍 ...

    myeclipse下安装flex说明文档

    // 使用 trace() 函数打印调试信息 } ]]&gt; !" /&gt; ``` ##### 3.3 配置 FlashTracer 1. 打开 FlashTracer,确保其已正确安装。 2. 在 “Select output file” 中手动设置调试日志文件路径。 3. 在指定路径下...

    flex4.5 打印功能

    压缩包文件“FlexPrintFour”很可能包含了实现Flex 4.5打印功能的相关示例代码、文档或资源,这些可以帮助开发者快速理解和应用上述功能。通常,这样的资源会包含一个或多个ActionScript类文件,可能还有MXML界面...

    打印预览(flex)

    Flex打印预览是一种在Flex应用程序中实现打印功能的技术,它允许用户在实际打印之前查看文档的打印效果。Flex是Adobe公司开发的一种基于ActionScript 3.0的富互联网应用程序(RIA)框架,它使用MXML和AS3进行编程,...

    Flex PDF文档

    Flex应用可以设置访问控制,限制打印、复制或编辑PDF内容。此外,可以使用数字签名和证书来验证PDF文档的完整性和来源。 9. **跨平台兼容性**:由于Flex是基于Flash Player的,所以它的PDF功能依赖于用户机器上的...

    Flex打印控件(FlexReport)

    Flex打印控件,如标题所述,FlexReport,是一种在Adobe Flex应用程序中用于生成和打印报告的组件。这个压缩包`FlexReport.zip`包含了用于演示、配置和运行FlexReport的必要资源。下面将详细阐述FlexReport及其包含的...

    flex4.5打印导出pdf完美版

    PDF(Portable Document Format)是一种广泛使用的文档格式,能够保留原始文档的格式和内容,方便跨平台分享和打印。在Flex应用中,将数据或报告导出为PDF文件,用户可以方便地保存和打印,这对于企业级应用尤其重要...

    jasperreports+alivepdf+Flex解决打印和导出PDF问题

    本话题主要关注如何利用jasperreports、alivepdf和Flex技术来解决在Web应用中的打印和导出PDF的问题。 jasperreports是一个强大的开源报表库,它允许开发者设计复杂的报告模板,并能在多种格式下生成,包括PDF、...

    flex制作pdf文档.适合学习flex的初学者

    标题和描述中的"flex制作pdf文档",指的是使用Flex技术来生成或处理PDF(Portable Document Format)文件。PDF是一种广泛用于共享和打印的文件格式,因其跨平台性和保真性而受到欢迎。在Flex中,这通常涉及使用库或...

Global site tag (gtag.js) - Google Analytics