在InfoQ上看到《Prawn:使用Ruby生成PDF更简捷》,其说到的Prawn可以更加快捷的在Ruby中生成PDF文件。因为之前使用过很多版本的PDF生成类库都不尽如人意,有的太复杂,有的太慢,于是对这个做了测试。
1、安装
安装很简单,直接使用gem install prawn即可安装完成;
2、使用
比较简单,详细的参考其文档,我直接贴一段我测试用的代码,如下:
Ruby代码
- # coding: utf-8
- $LOAD_PATH << File.join(File.dirname(__FILE__), ‘..’, ‘lib’)
- require "prawn"
- start = Time.now
- Prawn::Document.generate("utf8_text_flow.pdf") do
- font "#{Prawn::BASEDIR}/data/fonts/simfang.ttf"
- text "我是中文,还有数字+yingwen+898"* 2
- text "This is a english text, and i will be here …"
- 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 ,"
- font_size!(16)
- text "At size 16"
- font_size!(16)
- text "\nIceskYsl@1sters!"
- font_size!(10)
- text "不考虑安全的开发过程就是不完整的过程,而我只是个懂点安全对于互联网充满期待的程序员…"
- font_size!(12)
- text "更可怕的是,同质化竞争对手可以按照URL中后面这个ID来遍历您的DB中的内容,写个小爬虫把你的页面上的关键信息顺次爬下来也不是什么难事,这样的话,你就非常被动了。"
-
- end
- puts "Spend #{Time.now-start}s"
生成的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