rails实现PDF文档导出功能

时间:2021-06-06 06:48:35

业务系统中,经常有导出PDF的需求,现使用prawn来实现这一功能。

  1. gem install prawn;
  2. bundle exec rake manual生成manual.pdf帮助文档;
  3. 将自己需要的字体拷贝至"#{Prawn::DATADIR}/fonts/"路径下;

目前的需求很简单,只需要将文字内容转化成pdf:

def generate_pdf(content)
    Prawn::Document.generate("test.pdf") do
      file = "#{Prawn::DATADIR}/fonts/gkai00mp.ttf"
      font_families["Kai"] = {
        :normal => { :file => file, :font => "Kai" }
      }
      text content, :fallback_fonts => ["Times-Roman", "Kai"]
    end
  end

现在想实现这样的一个功能:将markdown编写个人简历导出成pdf格式。然而prawn无法转化html格式,因此放弃使用,选择pdfkit

  1. Gemfile中添加gem 'pdfkit'gem 'wkhtmltopdf-binary',然后执行bundle install

  2. 定义路由:

      get 'download', to: 'welcome#download_resume'
  3. 代码实现:

    
    # app/controllers/welcome_controller.rb
    
    def download_resume
      resume = current_user.resume
      content = resume.content_html.nil? ? resume.content : resume.content_html
      kit = PDFKit.new(content, page_size: 'Letter')
      pdf = kit.to_pdf
      file_name = "#{current_user.username}的个人简历.pdf"
      send_data(pdf, filename: file_name)
    end