我试图在我的pdf应用程序中使用wicked_pdf gem来生成rails。我的文件中有下面的代码。
gemfile
gem 'wicked_pdf'
gem 'wkhtmltopdf-binary'和config/initializers/ and _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文件。我也不会犯任何错误。当我点击上面的网址时,我的网页将继续加载。我没有得到任何输出。
发布于 2016-12-15 21:11:17
您可以这样做(基于RailsCasts系列的示例):
environment.rb
require 'pdf/writer'
Mime::Type.register 'application/pdf', :pdfproducts_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
endproduct_drawer.rb
def self.draw(products)
pdf = PDF::Writer.new
products.each do |product|
pdf.text product.name
end
pdf.render
endviews/products/index.html.erb
<p><%= link_to 'PDF Format', formatted_products_path(:pdf) %></p>我认为这是实现此功能的更好方法。
https://stackoverflow.com/questions/41145091
复制相似问题