說(shuō)是使用pdfkit,其實(shí)做工作的還是wkhtmltopdf窟社。
一券勺、新建項(xiàng)目
rails new mypdf --skip-bundle
進(jìn)入項(xiàng)目:cd mypdf,打開(kāi)Gemfile:vim Gemfile
修改source為https://ruby.taobao.com
添加:gem 'pdfkit'
運(yùn)行bundle install
二灿里、配置
在項(xiàng)目目錄下的config/initializers里加上pdfkit.rb文件关炼,修改內(nèi)容為:
PDFKit.configure do |config|
config.wkhtmltopdf = '/path/wkhtmltopdf'
end
config.wkhtmltopdf配置的是wkhtmltopdf的路徑,要確保pdfkit能找到它匣吊。
其它的配置請(qǐng)參考:http://wkhtmltopdf.org/usage/wkhtmltopdf.txt儒拂,里面的橫杠用下劃線代替寸潦。
三、使用
在controller里的相應(yīng)位置加入:
用渲染的模版內(nèi)容生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的內(nèi)容生成pdf:
url = "http://www.baidu.com"
kit = PDFKit.new(url)
# kit.stylesheets << "#{Rails.root}/app/assets/assets/stylesheets/pdf.css" # 用url時(shí)就不可以用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可以自己獲取。
另外撵儿,如果你的頁(yè)面里有js需要運(yùn)行乘客,最好在設(shè)置文件里設(shè)置如下:
javascript_delay: 1000
它的默認(rèn)值是200毫秒。把加大一些淀歇,以便讓js運(yùn)行完成易核。
這樣就可以用了。