1.下载安装wkhtmltox
2.gemfile添加
gem 'pdfkit' #页面导出pdf gem 'wkhtmltopdf-binary-edge', '~> 0.12.2.1’
执行 bundle install
3.config/initializers中加入pdfkit.rb
PDFKit.configure do |config| config.wkhtmltopdf = '/path/wkhtmltopdf' end
config.wkhtmltopdf配置的是wkhtmltopdf的路径,要确保pdfkit能找到它。
4.使用
在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运行完成。
这样就可以用了。