分享好友 编程语言首页 频道列表

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

ruby专题  2023-02-10 09:080

在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效果还是比较让人满意的,如下是效果图:

 

Prawn:Ruby生成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生成类库了,如下是效果图,可以和上面的那个比较下。

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

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

查看更多关于【ruby专题】的文章

展开全文
相关推荐
反对 0
举报 0
评论 0
图文资讯
热门推荐
优选好物
更多热点专题
更多推荐文章
[ruby on rails] 跟我学之(6)显示指定数据
根据《[ruby on rails] 跟我学之路由映射》,我们知道,可以访问 GET    /posts/:id(.:format) 来显示具体的对象。 修改 app/controllers/posts_controller.rb的show这个action。这里有个难题,如果获取url里面的参数?可以通过params内置变量进行访问

0评论2023-03-16300

[ruby on rails] 跟我学之(10)数据输入验证
这里简单加上几个验证,非空,最小长度,唯一修改app/models/post.rb文件,如下:class PostActiveRecord::Base#attr_accessible :title, :contentvalidates :title, :context, :presence = truevalidates :title, :length = { :minimum =2}validates :title,

0评论2023-03-16870

[脚本_Ruby]Windows安装配置Ruby On Rails
感觉Java学的差不多了,想接触下Ruby On Rails,看看它比Java WEB高效到哪里了,在Ubuntu12.10上弄了两天总是报错提示没有指向的文件sqlite3,不管怎么安装sqlite3都不行,到最后没办法只有跑到WIN7平台下试试,以下就是我搭建Ruby On Rails的过程:    

0评论2023-02-10507

Ruby On Rails:InstanRails
参考数据:对于Ruby On Rails 不是粉清楚的朋友可以参考以下的连结信息,该连结网站都提供不错的Ruby On Rails 信息。Ruby: 一个纯OO的脚本语言..Ruby on Rails: 快速建置Web的MVC架构的Framework说明:整合环境: Instant Rails 是在Windows环境中,整合了Ruby,

0评论2023-02-10701

进入Ruby on Rails世界
一、ruby和rails简介  ruby是一种面向对象的动态脚本语言。它的语法很灵活,而且提供了丰富的类库。因此,用ruby编写程序的效率是非常高的。  虽然ruby很早就出现了(1993年诞生于日本),但由于ruby一直缺乏英语文档,而且当时的ruby在web开发上并不怎么

0评论2023-02-10479

ruby : nil?, empty? and blank?的选择
article = nilarticle.nil?# = trueempty? checks if an element - like a string or an array f.e. - is empty:# Array[].empty? #= true# String"".empty? #= trueRails adds the method blank? to the Object class:An object is blank if it‘s false, em

0评论2023-02-09424

Ruby环境的安装(In Ubuntu 7.10)
今天开始学习Ruby。准备的图书呢,就是《Programming Ruby - 2nd》。为了准备一个实验的环境,于是要给我的Ubuntu上安装Ruby的环境。    1、安装解释器:sudo apt-get install ruby    2、安装一个即时执行工具irb:      由于第一部安装的结果只

0评论2023-02-09335

ruby使用IO类读写文件 ruby读取文件内容
path="test.txt"port=open(path)beginport.each_line{|line|p line.to_s}ensureport.closeendSTDOUT"i love you \n"port=open('test.txt')s=port.statp s.ftypep s.devp s.inop s.modep s.nlinkbegina=port.readlinesa=port.each{|e| p e}ensu

0评论2023-02-09410

Ruby1.9.2 开发环境安装备忘
在Windows下安装Ruby环境http://rubyinstaller.org/ 下载安装包和Devkit开发工具包Ruby的安装就不用说了。双击 Next.记得 Add to PATH Devkit 安装 把下载的压缩文件解压缩到如devkit文件夹中,例如:Ruby安装位置:D:\Ruby\Devkit安装位置:D:\Ruby\devkit 

0评论2023-02-09870

Python vs Ruby: 谁是最好的 web 开发语言?
Python 和 Ruby 都是目前用来开发 websites、web-based apps 和 web services 的流行编程语言之一。 这两种语言在许多方面有相似之处。它们都是高级的面向对象的编程语言,都是交互式脚本语言、都提供标准库且支持持久化。但是,Python 和 Ruby 的解决方法却

0评论2023-02-09819

Ruby require_gem
   gem 是ruby 的包管理系统,类似于ubuntu 的 apt-get.命令安装包:gem install your-package移除包:  gem uninstall your-package查询:     gem query –ln your-wanted (本地)             gem query –rn your-wanted (网上资源) 程序

0评论2023-02-09778

ruby 赋值语句解析
a = [1,2,3,4]-----------------------------------------------b,c = a      = b=1,c=2当右边只有一个数组,ruby自动将右边的数组拆分,然后赋值给左边的变量-----------------------------------------------b,*c = a    =b=1 ,c=[2,3,4]当左边变量

0评论2023-02-09341

Ruby on rails开发从头来(五十四)- ActiveRecord基础(指定关联关系)
Rails支持三种表间关联关系,一对一,一对多,多对多,你需要在Model中加入声明来标识这些关联:has_one,has_many,belongs_to,has_and_belongs_to_many。一对一关联关系可能存在于象订单和发票这样的关系,一个订单只能有一个发票,在Rails中,我们这样指

0评论2023-02-09873

Ruby的require
require一般用来加载其它的类,如: #Ruby代码  :require 'dbi'  require "rexml/document"但是上面加载的是标准类库里面的文件,当然也可以是已安装的gems文件,但是如果是自己在本地写的文件,就不能直接用require了,而应该这样:#E7.4-1.rb Modul

0评论2023-02-09601

更多推荐