`
chengj
  • 浏览: 17863 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

ruby版fpdf的两处bug修改

阅读更多

前一段时间有一个ROR的小项目,需要输出PDF文件,于是到网上搜了一圈儿,最后选定了ruby版的fpdf(1.53d),特点:短小,实用。
但是使用过程中也碰到了一些小问题。中文问题,如果使用'GB'字体,中文可以正常显示,但是如果混入了数字或英文,格式很难看。
我发现在chinese.rb中还有一种叫'GB-hw'的字体,拿来一试,效果很好,只是chinese.rb中有两处bug需要修改。
第一处在87行后追加 cw = {},第二处在113行,原文是 l += cw[c],改成 l += cw[c.chr]就可以了。
再举一个使用的例子,首先在app\models目录下建一个gpdf.rb文件用来写页头和页脚的内容。
 
class Gpdf < FPDF

  attr_accessor :title

  # Page header
  def Header

    ic = Iconv.new('GBK', 'UTF-8')
    # GB-hw bold 16
    SetFont('GB-hw','',16)
    # Title
    Cell(0, 10, ic.iconv(@title), 0, 0, 'C')

    # Line break
    Ln(12)
  end

  # Page footer
  def Footer
    # Position at 1.5 cm from bottom
    SetY(-15)
    ic = Iconv.new('GBK', 'UTF-8')
    # GB-hw italic 8
    SetFont('GB-hw','',8)
    # Page number
    Cell(0, 10, ic.iconv('页 ') + PageNo().to_s + '/{nb}', 0, 0, 'C')
  end
end

然后在Controller里像下面这么用就可以了。

      pdf = Gpdf.new
      pdf.title = '销售产品'
      pdf.extend(PDF_Chinese)
      pdf.AddGBhwFont
      pdf.AliasNbPages
      pdf.AddPage
      ic = Iconv.new('GBK', 'UTF-8')
      pdf.SetFont('GB-hw','',10)
      pdf.Cell(55, 7, ic.iconv('金额123'), 1, 0, 'C')

分享到:
评论
1 楼 iceskysl 2008-09-12  
我推荐你试试Prawn,在我看来,是最好用的,暂时,其原来有些对中文自动换行的处理不是很好,我提给作者已经修复了。

参考我当时写的:
Prawn:Ruby生成PDF更简捷的选择
http://iceskysl.1sters.com/?action=show&id=355

相关推荐

    Fpdf1.7官方最新版

    fpdf是利用php直接生成pdf文件,该类提供了多个功能接口,运行程序员自己定义pdf的样式,台湾朋友在其中加入了中文化补丁支撑繁体和简体。

    FPDF中文说明---FPDF

    FPDF中文说明,FPDF中文说明,FPDF中文说明,

    fpdf1.51 及例子

    fpdf1.51 及例子fpdf1.51 及例子fpdf1.51 及例子

    fpdf17资源代码

    fpdf17 fpdf 资源代码

    fpdf中文版本带中文帮助文档

    fpdf中文版本带中文帮助文档。它是一个很强大的pdf生成工具,谁用谁知道。

    FPDF V 1.6 + FPDF 中文包

    资源包含chinese.php pdf中文支持类、还有fpdf1.6版本,还有ttf2pt1中文支持文档、ttf2pt1中文格式转换程序(ttf2pt1.zip和ttf2pt1-chinese-3.4.0.zip)分开上传,大家可以对应下载自己所需要的

    FPDF 1.52 中文手冊

    FPDF 1.52 中文使用参考手冊,FPDF这个PHP Class允许你采用纯PHP(更确切地说就是不需要使用PDFlib)来生成PDF文件。它所具有的特点包括:可选择的unit大小,页面格式和页边距;页眉和页脚管理;自动分页;自动换行与...

    fpdf1.6最新版本,还有中文官网包

    fpdf最新版本1.6。将下载的文件解压到某一个文件夹即可。 有一个需要配置的地方就是解压缩后得到的font文件夹。一般需要将该文件夹移动到用户站点与要调用fpdf类库代码在同一目录下,因为调用类库的时候要首先指明...

    FPDF,php生成PDF

    FPDF中的F意味着自由:你可以使用它的任何一种使用和修改它以适合你的需要。 FPDF还有其它优点:高水平的功能。这里是一个列表,它的主要特点: 计量单位的选择,网页格式和利润 页眉和页脚管理 自动分页符 自动换行...

    html2fpdf 中文支持

    好在官方提供了Chinese支持文件,但苦于不知如何使用,也没有使用说明可以参照,于是乎继续谷歌百度需求方法,找到了别人修改好的加入中文支持的文件包。 在实际使用中发现,html2fpdf 对于较为简单的html页面的...

    FPDF chm 帮助 文档

    FPDF chm 帮助 文档FPDF chm 帮助 文档FPDF chm 帮助 文档FPDF chm 帮助 文档FPDF chm 帮助 文档FPDF chm 帮助 文档

    PHP的FPDF的中文包chinese.php

    FPDF的中文支持chinese.php

    fpdf中文应用

    fpdf扩展 fpdf中文处理 字体库转换即将ttf转换成php

    html2fpdf php类

    html2fpdf是对fpdf的扩展 php类

    FPDF的日文支持包php

    FPDF的日文包 japanese.php

    PHP FPDF 换行工具

    PHP FPDF 换行工具 效果很好

    FPDF 类库应用

    FPDF 类库应用 PHP FPDF 类库应用 PHP FPDF 类库应用 PHP

    fPdf类库中文补丁

    fPdf中文补丁:FPDF是一个优秀的PHP生成PDF文件的类库。它所具有的特点包括:可选择的unit大小,页面格式和页边距;页眉和页脚管理;自动分页;自动换行与文本自动对齐;支持JPEG与PNG图片格式;支持着色和文件...

    fpdf17-php做pdf插件

    fpdf17-php做pdf插件fpdf17-php做pdf插件fpdf17-php做pdf插件fpdf17-php做pdf插件fpdf17-php做pdf插件fpdf17-php做pdf插件

Global site tag (gtag.js) - Google Analytics