2016-12-14 3 views
0

Я пытаюсь создать pdf с помощью wicked_pdf gem в моем приложении rails. У меня есть следующий код в моих файлах.Невозможно создать pdf-файл с wicked_pdf gem в рельсах?

gemfile 

gem 'wicked_pdf' 
gem 'wkhtmltopdf-binary' 

и в конфигурационном/инициализаторах/файла 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

Iam не в состоянии генерировать PDF-файл. И я тоже не получаю никаких ошибок. когда я нажимаю на указанный выше URL-адрес, моя веб-страница продолжает загружаться. я не получаю никакой информации.

ответ

0

Вы можете сделать таким образом (например, на основе 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 

просмотров/Продукты/index.html.erb

<p><%= link_to 'PDF Format', formatted_products_path(:pdf) %></p> 

Я думаю, что это лучший способ реализации этой функции.