62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
# File 'lib/jasper-rails.rb', line 62
def self.render_pdf(jasper_file, datasource, parameters, options)
options ||= {}
parameters ||= {}
jrxml_file = jasper_file.sub(/\.jasper$/, ".jrxml")
begin
jasper_params = HashMap.new
parameters.each do |k,v|
jasper_params.put(JavaString.new(k.to_s), JavaString.new(v.to_s))
end
if !File.exist?(jasper_file) || (File.exist?(jrxml_file) && File.mtime(jrxml_file) > File.mtime(jasper_file))
JasperCompileManager.compileReportToFile(jrxml_file, jasper_file)
end
input_source = InputSource.new
input_source.setCharacterStream(StringReader.new(datasource.to_xml(options).to_s))
data_document = silence_warnings do
JRXmlUtils._invoke('parse', 'Lorg.xml.sax.InputSource;', input_source)
end
jasper_params.put(JRXPathQueryExecuterFactory.PARAMETER_XML_DATA_DOCUMENT, data_document)
jasper_print = JasperFillManager.fillReport(jasper_file, jasper_params)
JasperExportManager._invoke('exportReportToPdf', 'Lnet.sf.jasperreports.engine.JasperPrint;', jasper_print)
rescue Exception=>e
if e.respond_to? 'printStackTrace'
::Rails.logger.error e.message
e.printStackTrace
else
::Rails.logger.error e.message + "\n " + e.backtrace.join("\n ")
end
raise e
end
end
|