Ruby Ruport實踐—中文PDF報表之FPDF

meteorlwj發表於2010-05-20

Ruport中pdf_writer對中文的支援並不好,輸出的中文顯示的是亂碼。上網查了很多資料,也沒有找到好的解決方案,無奈只好檢視原始碼,到底為什麼Ruport自帶的PDF工具不支援中文輸出。

Ruport::Formatter::PDF::Writer中找到以下程式碼

   metrics = load_font_metrics(font)

   metrics = PDF::Writer::FontMetrics.open(font)

   PDF::Writer::FontMetrics::METRICS_PATH = [ File.join(File.dirname(File.expand_path(__FILE__)), 'fonts') ]

 

原來METRICS_PATH=%RUBY_HOME%/lib/ruby/gems/1.8/gems/pdf-writer-1.1.8/lib/pdf/writer/fonts

在此路徑下存在的afm字型檔案均不支援中文,於是開始將目標轉向新增一個支援中文的 *.afm字型檔案。無奈檔案找到了,放到該路徑下,執行竟報錯了(也許是PDF_WRITER不支援該檔案)

 

放棄了此方法,把目標轉向FPDF

1)下載fpdf http://download.csdn.net/source/5608

2)解壓到Rails專案的lib下

3)按Ruby Roport實踐—簡單報表系統完成Ruport應用

4)接下來,修改ReportOutputController.rb

將 class Ruport::Formatter::PDF修改為如下內容

 

5)修改資料表report_templates中template_content內容為

 

報表效果:

 

 

 

 

相關文章