易截截图软件、单文件、免安装、纯绿色、仅160KB

Ruby Ruport实践—中文PDF报表之PRAWN

FPDF能支持PDF的中文打印,然而却存在不少的不如意之处,据我目前的使用,总结出几点:
1)FPDF提供的Pdf_Chinese字体,将GB这种字体写入了代码中,若我们希望引入其他的中文字体,则不能方便地使用
2)FPDF输出的数字并不美观,不如Ruport::Formatter::PDF自带的字体
3)FPDF提供的方法并不多,对于一般的报表打印,用的最多的也许是 Cell方法,但如果连一个普通的报表打印都需要能过代码控制换行、画直线、写单元格,那就太不方便了
Prawn也是呼声叫高的一种Ruby PDF报表工具,对于它和 FPDF 到底谁更优秀,这就要因人而异了,FPDF是用PHP编写的PDF库的移植,而PRAWN则不是 Prawn:使用Ruby生成PDF更简捷 中有简单的介绍
下面来看看PRAWN是如何实现PDF的打印的(基本的实现参考 Ruby Ruport实践—简单报表系统)
一、安装Prawn
gem install prawn
二、修改enviroment.rb
添加如下引用:
require "prawn"
require 'prawn/layout'
三、引入合适的中文字体
Prawn支持外部引入中文字体,例如“楷体”
从C:\Windows\Fonts下将本机支持的字体文件(*.ttf)复制到
%RUBY_HOME%\lib\ruby\gems\1.8\gems\prawn-core-0.8.4\data\fonts
在代码中通过
@pdf_writer.font"#{::Prawn::BASEDIR}/data/fonts/simkai.ttf"
指定需要引用的字体
四、修改ReportOutputController.rb
替换Pdf<Ruport::Formatter::PDF为如下代码:
class Ruport::Formatter::PRAWN< Ruport::Formatter::PDF
def pdf_writer
unless @pdf_writer
@pdf_writer = ::Prawn::Document.new
@pdf_writer.font"#{::Prawn::BASEDIR}/data/fonts/simkai.ttf"
end
return @pdf_writer
end
def render_pdf
output<<pdf_writer.render
end
end
class Pdf<Ruport::Formatter::PRAWN
renders :pdf, :for => ReportOutputController
build :data_sheet do
eval(options[:outputContent])
end
end
五、保存repoert_templates
对于template_content的内容保存为如下:
pdf_writer.text ("产品列表",
:align=>:center,:size=>15)
pdf_writer.image ("public/images/ruport.jpg",
:at => [0,730],
:height=>50,
:width=>100)
pheader=%w[类别 名称 价格]
pdata=[]
for i in 0..data.length-1 do
temp=[data[


相关文档:

Ruby 报表工具 Ruport

Ruport是一个免费的Ruby报表工具,它可以令到制作报表软件变得简单一些。Ruport支持从文件或者数据库获得数据,提供工具操作数据。额外地,Ruport支持高扩展的格式化软件,目前能够支援HTML、PDF、CSV和文本输出。
Ruport可能是Ruby目前唯一的报表工具,目前在持续开发中,更多的新特性正在添加。
安装方法:
gem instal ......

记录下自己Ubunt 10.04 搭建ruby on rails环境

1、安装ubuntu
一路next,记住安装英文版。待安装完毕后,首先选择“软件源”,系统--系统管理-软件源,国内一般选择的是:http://ubuntu.cn99.com/ubuntu;接着安装中文包,选择软件源就是为了下载软件的速度更快,安装完成后重启ubuntu,重启后会提示是否改变某些文件夹名称,选择“否”,防止系统对 ......

ruby 字符串 理解 "" ''

ruby中单引号和双引号的意义有所不同,双引号包围的字符作变量替换,单引号包围的变量不做替换
也可以使用 %q 和 %Q 来生成字符串对象。%q 相当于单引号,%Q相当于双引号。
举例如下:
irb(main):010:0> "show trsult: #{1*3}"
=> "show trsult: 3"
irb(main):011:0> 'show trsult: #{1*3}'
=> "show trs ......

Ruby Ruport实践—中文PDF报表之FPDF

Ruport中pdf_writer对中文的支持并不好,输出的中文显示的是乱码。上网查了很多资料,也没有找到好的解决方案,无奈只好查看源代码,到底为什么Ruport自带的PDF工具不支持中文输出。
Ruport::Formatter::PDF::Writer中找到以下代码
   metrics = load_font_metrics(font)
   metrics = PDF::Writer: ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号