iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 23
0
自我挑戰組

Junior Ruby on Rails 工程師的心得與自我挑戰 30 天 (單身狗轉移注意力之歷練)系列 第 23

[Day23] Ruby on Rails - 使用 Pdfkit 套件來產生 PDF 檔案

  • 分享至 

  • xImage
  •  

說是使用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


上一篇
[Day22] Ruby on Rails - Rake 的使用
下一篇
[Day24] Ruby on Rails - Timezone Mapping 實作之碰到問題及解法
系列文
Junior Ruby on Rails 工程師的心得與自我挑戰 30 天 (單身狗轉移注意力之歷練)30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言