![](/img/trans.png)
[英]Ruby on Rails unable to generate pdf with map content wicked_pdf
[英]Unable to generate the pdf with wicked_pdf gem in rails?
我正在嘗試通過在rails
應用程序中使用wicked_pdf
gem生成pdf
。 我的文件中包含以下代碼。
gemfile
gem 'wicked_pdf'
gem 'wkhtmltopdf-binary'
並在config / initializers / wicked_pdf.rb文件中
WickedPdf.config = {
# Path to the wkhtmltopdf executable: This usually isn't needed if using
# one of the wkhtmltopdf-binary family of gems.
# exe_path: '/usr/local/bin/wkhtmltopdf',
# or
# exe_path: Gem.bin_path('wkhtmltopdf-binary', 'wkhtmltopdf')
# Layout file to be used for all PDFs
# (but can be overridden in `render :pdf` calls)
# layout: 'pdf.html',
}
module WickedPdfHelper
if Rails.env.development?
if RbConfig::CONFIG['host_os'] =~ /linux/
executable = RbConfig::CONFIG['host_cpu'] == 'x86_64' ?
'wkhtmltopdf_linux_x64' : 'wkhtmltopdf_linux_386'
elsif RbConfig::CONFIG['host_os'] =~ /darwin/
executable = 'wkhtmltopdf_darwin_386'
else
raise 'Invalid platform. Must be running linux or intel-based Mac OS.'
end
WickedPdf.config = { exe_path:
"#{Gem.bin_path('wkhtmltopdf-binary').match(/(.+)\/.+/).captures.first}/#{executable}"
}
end
end
並在控制器中
def show
respond_to do |format|
format.html
format.pdf do
render pdf: "file_name" # Excluding ".pdf" extension.
end
end
end
在/config/initializers/mime_types.rb
Mime::Type.register "application/xls", :xls
Mime::Type.register "application/xlsx", :xlsx
Mime::Type.register "application/pdf", :pdf unless Mime::Type.lookup_by_extension(:pdf)
並在文件views/invoises/show.pdf.erb
<p>
Invoice No:
<%= @invoise.invoice_no %>
</p>
<p>
Due date:
<%= @invoise.due_date %>
</p>
<p>
Total Amount:
<%= @invoise.total_amount %>
</p>
我在瀏覽器中單擊的URL是/invoises/BRUqWOeEVNSN6GCwxQqLGg%253D%253D.pdf
我無法生成pdf文件。 而且我也沒有任何錯誤。 當我單擊上面的URL時,我的網頁正在繼續加載。 我沒有任何輸出。
您可以通過這種方式進行操作(基於RailsCasts系列的示例):
的environment.rb
require 'pdf/writer'
Mime::Type.register 'application/pdf', :pdf
products_controller.rb
def index
@products = Product.find(:all)
respond_to do |format|
format.html
format.pdf do
send_data ProductDrawer.draw(@products), filename: 'products.pdf', type: 'application/pdf', disposition: 'inline'
end
end
end
product_drawer.rb
def self.draw(products)
pdf = PDF::Writer.new
products.each do |product|
pdf.text product.name
end
pdf.render
end
views / products / index.html.erb
<p><%= link_to 'PDF Format', formatted_products_path(:pdf) %></p>
我認為這是實現此功能的更好方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.