ruby on rails 中使用pdfkit生成pdf

說是使用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運行完成。

這樣就可以用了。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容