【问题标题】:flying saucer / jruby on rails generate pdf from view飞碟 / jruby on rails 从视图中生成 pdf
【发布时间】:2011-07-18 19:42:24
【问题描述】:

我正在尝试使用飞碟在 jruby on rails 中的视图中生成一个 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

我收到一个错误

未初始化的常量PatientsController::FlyingSaucer

我需要控制器中的 java 和 fly_saucer

任何帮助将不胜感激

【问题讨论】:

  • 我建议尝试拼凑一个小的独立脚本,看看是否可以重现问题(如果可以,请在此处发布!)
  • 好吧,我已经消除了所有的错误消息,但是现在服务器只是在调用日历操作时挂起。
  • 您可以在独立脚本中重新创建吗?您能否描述您为修复未初始化的常量错误所采取的步骤(为了其他可能遇到此问题的人)?

标签: jruby jrubyonrails flying-saucer


【解决方案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 也可能会有所帮助。

【讨论】:

    【解决方案2】:

    确保飞碟罐在类路径中。

    【讨论】:

      猜你喜欢
      • 2016-06-26
      • 2012-05-06
      • 2017-11-25
      • 2021-03-25
      • 2014-04-04
      • 2013-04-09
      • 2016-08-31
      • 2018-03-22
      • 2016-08-27
      相关资源
      最近更新 更多