Для тех из вас, кто, как и я несколько раз назад, прибыл сюда в поисках способа создания PDF :: Writer, работающего в приложении rails 3, возможно, при миграции существующего приложения Rails 2.x, я наконец достиг pdf-writer, версия 1.1.8, для работы в приложении rails 3.2.
В Gemfile :
gem 'pdf-writer'
У меня есть это в config / initializers / pdfwriter_template.rb
module ActionView
module Template::Handlers
class PDFWriter
def call(template)
require_engine
"pdf = ::PDF::Writer.new( :paper => 'A4' );" +
"pdf.compressed = true if Rails.env.to_s == 'production';" +
template.source +
";pdf.render"
end
protected
def require_engine
@required ||= begin
require 'pdf/writer'
require 'pdf/simpletable'
true
end
end
end
end
end
ActiveSupport.on_load(:action_view) do
ActionView::Template.register_template_handler :rpdf, ActionView::Template::Handlers::PDFWriter.new
end
тогда в действии контроллера я могу написать что-то вроде:
def pdf_test
@record = Record.find(params[:id])
fileout = render_to_string :layout=>false
send_data(fileout, :type => "application/pdf", :filename => 'test_record.pdf')
end
с файлом шаблона pdf_test.rpdf :
pdf.text "Hello from record number #{@record.number}!!"
!!!!! ВНИМАНИЕ: это не самый лучший способ рендеринга PDF в Rails !!!!!!Вместо этого используйте PDFKit или Prawn !!!!!