說是使用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可以自己擷取。
這樣就可以用了。
ruby on rails 中使用pdfkit產生pdf