• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

rubyonrails中使用pdfkit生成pdf

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

说是使用pdfkit,其实做工作的还是wkhtmltopdf。

一、新建项目

  rails new mypdf --skip-bundle

  进入项目:cd mypdf,打开Gemfile:vim Gemfile

  修改source为https://ruby.taobao.com

  添加:gem 'pdfkit'

  运行bundle install

二、配置

  在项目目录下的config/initializers里加上pdfkit.rb文件,修改内容为:

  PDFKit.configure do |config|
     config.wkhtmltopdf = '/path/wkhtmltopdf'
  end

  config.wkhtmltopdf配置的是wkhtmltopdf的路径,要确保pdfkit能找到它。

  其它的配置请参考:http://wkhtmltopdf.org/usage/wkhtmltopdf.txt,里面的横杠用下划线代替。  

三、使用

  在controller里的相应位置加入:

  用渲染的模版内容生pdf:

  html = render_to_string(:template => "pdf_template.erb",:layout => false)

      kit = PDFKit.new(html)
      kit.stylesheets << "#{Rails.root}/app/assets/assets/stylesheets/pdf.css"
      #kit.to_pdf # inline PDF
      #kit.to_file('/path/pdf.pdf')
      send_data(kit.to_pdf, :filename => "mypdf.pdf", :type => "application/pdf")
      #render :text => kit.to_pdf

  用url的内容生成pdf:

  url = "http://www.baidu.com"
      kit = PDFKit.new(url)
      # kit.stylesheets << "#{Rails.root}/app/assets/assets/stylesheets/pdf.css" # 用url时就不可以用css样式了。
      #kit.to_pdf # inline PDF
      #kit.to_file('/path/pdf.pdf')
      send_data(kit.to_pdf, :filename => "mypdf.pdf", :type => "application/pdf")

  注: kit = PDFKit.new(url, cookie: {"cookie_name"=>"cookie_content"}),如果需要登录的话,可以用cookie。cookie可以自己获取。

  另外,如果你的页面里有js需要运行,最好在设置文件里设置如下:

  javascript_delay: 1000 
 它的默认值是200毫秒。把加大一些,以便让js运行完成。

  这样就可以用了。  

  


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
RUBY实践—数据库简单操作发布时间:2022-07-14
下一篇:
cocoapods:安装/更新Ruby环境教程发布时间:2022-07-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap