Prawn:Ruby生成PDF更简捷的选择

在InfoQ上看到《Prawn:使用Ruby生成PDF更简捷》,其说到的Prawn可以更加快捷的在Ruby中生成PDF文件。因为之前使用过很多版本的PDF生成类库都不尽如人意,有的太复杂,有的太慢,于是对这个做了测试。

1、安装

安装很简单,直接使用gem install prawn即可安装完成;

2、使用

比较简单,详细的参考其文档,我直接贴一段我测试用的代码,如下:

Ruby代码
  1. # coding: utf-8  
  2.   
  3. $LOAD_PATH << File.join(File.dirname(__FILE__), ‘..’‘lib’)  
  4. require "prawn"  
  5. start = Time.now  
  6. Prawn::Document.generate("utf8_text_flow.pdf") do  
  7.   font "#{Prawn::BASEDIR}/data/fonts/simfang.ttf"  
  8.   text "我是中文,还有数字+yingwen+898"* 2  
  9.   text "This is a english text, and i will be here …"  
  10.   text "This is a long text ,This is a long text ,This is a long text ,This is a long text ,This is a long text ,This is a long text ,This is a long text ,This is a long text ,This is a long text ,This is a long text ,This is a long text ,This is a long text ,"  
  11.     
  12.   font_size!(16)  
  13.   text "At size 16"  
  14.     
  15.   font_size!(16)  
  16.   text "\nIceskYsl@1sters!"  
  17.   font_size!(10)  
  18.   text "不考虑安全的开发过程就是不完整的过程,而我只是个懂点安全对于互联网充满期待的程序员…"  
  19.   font_size!(12)  
  20.   text "更可怕的是,同质化竞争对手可以按照URL中后面这个ID来遍历您的DB中的内容,写个小爬虫把你的页面上的关键信息顺次爬下来也不是什么难事,这样的话,你就非常被动了。"  
  21.      
  22. end  
  23. puts "Spend #{Time.now-start}s"  
  24.                                   
  25.         
  26.         

生成的PDF效果还是比较让人满意的,如下是效果图:

 

3、优缺点

  • 使用比较方便,API都比较简单;
  • 相对来水比较快,从上面代码可以看到,生成如上这份PDF需要的时候是”Spend 4.36s“;
  • 其本身支持14种内在字体,另外可以使用TTF字体文件来添加自己需要的字体;
  • 支持UTF8字体,对中文等字体支持比较好
  • 英文可以自动换行,但是我测试中文就不能自动换行了,如上图的红圈地方就是溢出的;–已经修复
  • 定位方便;
  • 支持图片插入;
  • 支持表格,cell等等。

4、其他

上面说的那个Bug我已经提交给作者,详细的参考这里”chinese text can not flow well “,应该很快就可以修复和完善了;

让我惊奇的是其主页 上竟然有 中文版页面,难道有国人参与?

其代码库在:http://github.com/sandal/prawn/tree/master

5、更新

上面说到的一个对中文自动换行的BUG,提交给作者后,他就修复了,现在我测试的效果非常棒,是我见过的最棒的一个PDF生成类库了,如下是效果图,可以和上面的那个比较下。

转自:http://iceskysl.1sters.com/?p=355 

posted @ 2010-10-24 02:23  Jones.Zhao  阅读(1160)  评论(0编辑  收藏  举报