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')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值