rails 简单的生成PDF文档

[size=x-large][color=green]生成PDF文档

你用一个应用程序,它将产生一个报表,一个回执单或者一些其他的输出,你想让用户保存它们,为了得到一致的格式以及方便的分发,用一个PDF文档进行输出。

在rails应用程序中使用rubyFPDF来生成PDF 文档。

 首先在 http://brian.imxcc.com/fpdf/rfpdf153c.tar.gz. 下载 ruby FPDF .解压后移动到fpdf.rb 的文件目录下的lib下面。 

在控制器里 包含进来。

app/controllers/reports_controller.rb:

class ReportsController < ApplicationController

  require 'fpdf'

  def index
  end

  def pdf_report

    # Data
    col_sizes = [40,20,20,20]
    data = [['Course','Exam 1','Exam 2','Final'],
            ['ENGLISH 101','90','87','B'],
            ['MUSIC 5A','97','100','A'],
            ['CALC 2','98','91','A'],
            ['SWIM','89','84','B'],
            ['HIST 110','91','81','B']]

    send_data pdf_report_card(col_sizes, data),
              :filename => "report.pdf", 
              :type => "application/pdf" 
  end

  private
    def pdf_report_card(col_sizes, data)

      pdf = FPDF.new

      pdf.AddPage
      pdf.SetFont('Arial','B')
      pdf.SetFontSize(10)
      pdf.SetFillColor(50,50,50)
      pdf.SetTextColor(255)
      pdf.SetDrawColor(0)
      pdf.SetLineWidth(0.2)

      # Table Header
      i = 0   
      col_sizes.each do
        pdf.Cell(col_sizes[i],7,data[0][i],1,0,'C',1)
        i += 1
      end
      pdf.Ln()

      pdf.SetFillColor(218,206,255)
      pdf.SetTextColor(0)
      pdf.SetFont('Arial')

      fill = 0
      # Table Data
      data[1..-1].each do |row|
          pdf.Cell(col_sizes[0],6,row[0],'LR',0,'L',fill)
          pdf.Cell(col_sizes[1],6,row[1],'LR',0,'L',fill)
          pdf.Cell(col_sizes[2],6,row[2],'LR',0,'L',fill)
          pdf.Cell(col_sizes[3],6,row[3],'LR',0,'C',fill)
          pdf.Ln()
          fill = (fill-1).abs % 2
      end

      # Bottom Table Border
      total = 0
      col_sizes.each {|x| total += x}
      pdf.Cell(total,0,'','T');

      pdf.Output
    end
end

在index.rhtml 简单的恶创建一个生成PDF报告连接。 

app/views/reports/index.rhtml:

<h1>Report</h1>

<%= link_to 'Make PDF', :action => 'pdf_report' %>
[/color][/size]

相关推荐