Flash/Flex 开发中的AS3 PDF库alivepdf

本文来自RIAMeeting:http://riameeting.com/node/412

http://www.alivepdf.org/ (国内可能需要代理访问)是一个在Flash/Flex中使用Actionscript3生成PDF的工具库。其代码放在google code上面:http://code.google.com/p/alivepdf/
LivePDF 可以轻松的生成打印用的报表PDF. 

由于Actionscript3本身对打印的支持不是非常到位,导致我们一般情况下,在Flash中,如果需要打印,不仅操作打印的步骤比较繁琐,而且,打印出来的内容由于都转换成了位图,也会导致打印过程中产生一些失真的情况。

而如果使用alivepdf库,则可以将文字,图片甚至矢量图绘制到PDF文档中去。使用alivepdf生成的pdf文档,文字不会被转换为图片,图像也不会由于失真而看上去比较乱。

另外,alivepdf的使用非常简单易懂.

他有两种PDF生成模式

1,在服务器远程生成

服务器远程生成的机制是为了兼容Flash Player9,因为Flash player9的用户无法直接保存文件到本地,需要服务器生成后下载文件。如果你的目标是Flash Payer10,则不需要远程服务器生成

2,在本地直接生成

 

其代码非常简单易懂,下面简单介绍一下代码

  var myPDF:PDF = new PDF( Orientation.LANDSCAPE, Unit.MM, Size.A4 );  

 这行代码创建一个PDF对象,使用A4纸张,单位是毫米,A4纸张横向放置。

如果选择Orientation.PORTRAIT 则是纸张纵向使用

由于在PDF中绘制是矢量,我们需要指明其缩放模式。

 

 myPDF.setDisplayMode ( Display.REAL );  

 这行代码会按照100%的方式把你绘制的内容缩放到纸张上。

 

 myPDF.addPage();

 在PDF中添加一页

 

 myPDF.lineStyle ( new RGBColor ( 0x990000 ) ); myPDF.drawCircle ( 20, 20, 20 );

在PDF中绘制一个圆圈。注意,这里完全在使用Actionscript3的绘图API,意味着你可以直接直接使用一些AS3的绘图类库和工具类

 

   myPDF.setFont(FontFamily.ARIAL, 'B', 12); myPDF.textStyle ( new RGBColor ( 0x000000) ); myPDF.addCell(50,10,'A clikable cell !', 1, 1, null, 0, 'http://www.riameeting.com');

这里,添加了一个字体为ARIAL的文字,并且,这个文字可以点击链接到www.riameeting.com网址。

最后,我们来保存这个PDF 

  myPDF.save( Method.REMOTE, 'http://www.riameeting.com/examples/alivepdf/create.php','generated.pdf');

如果你担心你的发布人群中,大家都在使用Flashplayer9,则可以发布为远程生成模式。alivepdf附带了php的代码以及java的代码还有C#代码的服务端代码。直接上传至服务器即可。

如果你使用AIR,则可以直接在本地保存:

 
    
  1. var f :FileStream = new FileStream ( ); file = File.desktopDirectory.resolvePath ( 'pdf/generate.pdf' ); f. open ( file, FileMode.WRITE ); var bytes : ByteArray = myPDF. save (Method.LOCAL ); f. writeBytes (bytes ); <br />
  2. f. close ( ) <br />

 到此,这个PDF就生成好了。 下面的Flash是一个例子

 

你可能感兴趣的:(Flash/Flex 开发中的AS3 PDF库alivepdf)