飞碟/ jruby on rails从视图生成pdf

时间:2011-07-18 19:42:24

标签: jruby jrubyonrails flying-saucer

我正在尝试使用飞碟在轨道上的jruby视图中生成pdf,控制器中包含以下代码:

def calendar
  @patient = Patient.find_by_id(params[:id])
  result = render_to_string
  send_data( FlyingSaucer::create_pdf(result), :filename => "calendar.pdf",
           :type => "application/pdf",
           :disposition => 'attachment')
end

我收到错误

  

未初始化的常数PatientController :: FlyingSaucer

我在控制器中需要java和flying_saucer

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:1)

试试这个:

require 'flying_saucer'
java_import org.xhtmlrenderer.pdf.ITextRenderer

class SomeController < ApplicationController

def show
  respond_to do |format|
    format.pdf { send_data render_pdf, :filename => 'test.pdf' }
  end
end

private

def render_pdf                                                                
  io = StringIO.new                                                           
 content = render_to_string(:layout => false)
 # content = '<html><body><h1>Yo</h1></body></html>'                         
 renderer = ITextRenderer.new                                                
 renderer.set_document_from_string(content)                                  
 renderer.layout                                                             
 renderer.create_pdf(io.to_outputstream)                                     
 io.string                                                                   
 end                                                                           
end 

end

尝试查看此presentation的幻灯片66作为示例。

This也可能有所帮助。

答案 1 :(得分:0)

确保飞碟罐在类路径中。