`
chengj
  • 浏览: 18064 次
  • 性别: 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官方最新版

    "Fpdf1.7官方最新版"指的是FPDF库的1.7版本,这是该库的一个稳定版本,包含了各种优化和改进,以满足不同用户的需求。 FPDF的核心特点在于其完全由PHP编写,无需任何外部依赖,这使得它在Web服务器上易于部署和使用...

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

    "fpdf中文版本带中文帮助文档" 提供了FPDF库的中文语言支持和相关的中文文档,使得中文用户在使用过程中能更好地理解和应用这个工具。 FPDF的核心功能包括: 1. 页面管理:FPDF允许开发者创建新的PDF页面,并控制...

    FPDF中文说明---FPDF

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

    fpdf1.51 及例子

    这个“fpdf1.51 及例子”压缩包包含的是 FPDF 的 1.51 版本及其相关的示例代码,可以帮助用户理解和学习如何使用 FPDF 来创建 PDF 文件。 FPDF 的全称是 "Free PDF Generator for PHP",它允许 PHP 开发者在服务器...

    fpdf17资源代码

    `license.txt`文件中记录了FPDF库的许可协议,通常FPDF遵循的是MIT或GPL等开源许可,这决定了用户可以如何使用、修改和分发该代码。 `makefont`目录可能包含了用于创建自定义PDF字体的工具,因为FPDF默认只支持几种...

    生成PDF的PHP类:FPDF1.7和中文

    这个版本相对于早期版本可能包含了一些改进和修复,例如提高了性能,增加了新功能,或者解决了已知的bug。更新到较新版本通常可以获取更好的稳定性和兼容性。 描述中提到了"中文类",这意味着FPDF1.7版本支持中文...

    fpdf中文应用

    在描述中提到了“fpdf扩展”,这通常指的是为fpdf增加对中文字符的支持。由于fpdf原生不包含中文字体,我们需要扩展其功能,通常是通过引入额外的字体库或转换工具。描述中还提到了“fpdf中文处理”,这可能包括添加...

    fpdf资源包

    这两个文件可能是关于fpdf的常见问题解答(FAQ)和历史版本记录。FAQ.htm可能包含了使用fpdf过程中遇到的问题及解决方案,而histo.htm可能记录了fpdf库的更新历程和各个版本的特性。 **chinese.php** chinese.php...

    PHP的FPDF的中文包chinese.php

    2. **函数扩展**:扩展FPDF的核心类,添加新的方法用于设置中文字体、大小和样式。 3. **编码处理**:处理中文字符编码问题,确保与PDF文档的UTF-8或其他编码格式兼容。 4. **文字输出**:提供专门的函数来输出...

    FPDF V 1.6 + FPDF 中文包

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

    FPDF chm 帮助 文档

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

    html2fpdf php类

    这两个核心文件。 2. 实例化对象:创建一个HTML2FPDF对象,可以设置PDF的页面大小和方向。 3. 添加页面:调用对象的方法,如`AddPage()`,来添加新的PDF页面。 4. 转换HTML:使用`writeHTML()`方法,传入HTML字符串...

    html2fpdf 中文支持

    `html2fpdf` 是一个流行的PHP库,用于将HTML内容转换为PDF文档。这个工具在Web开发中非常有用,因为它允许开发者将网页内容轻松地导出为方便打印和保存的PDF格式。然而,由于HTML2FPDF最初设计时主要针对英文字符集...

    pdf 教程 fPdf中文补丁

    PDF教程:FPdf中文补丁详解 在信息技术领域,PDF(Portable Document Format)是一种广泛用于文档交换的标准格式,因其跨平台、保持原文档格式的特点而备受青睐。然而,当需要在PHP环境中动态生成PDF文件时,FPdf便...

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

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

    FPDF: PDF生成器

    这个库的独特之处在于它完全由PHP编写,不需要任何外部依赖,如Adobe Acrobat,Ghostscript或其他PDF阅读器。通过FPDF,开发者可以直接在PHP代码中控制PDF的布局,包括添加文本、图像、线条、表格等元素,从而实现...

    fpdf开源代码及实例

    创建PDF时,首先要包含FPDF库文件,然后创建一个FPDF对象。例如: ```php require('fpdf17/fpdf.php'); $pdf = new FPDF(); ``` 接着,你可以设置页面尺寸和方向,比如: ```php $pdf-&gt;AddPage(); $pdf-&gt;SetMargins...

    FPDF,php生成PDF

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

    FPDF 1.52 中文手冊

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

Global site tag (gtag.js) - Google Analytics