rails实现PDF文档导出功能

业务系统中,经常有导出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
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值