我是JasperReports
的新手,不知道如何從servlet調用jasper文件。我的報告包含餅圖。JasperReports:從servlet調用報告
6
A
回答
1
這是一個在Servlet文件中創建的虛擬報告。
它與普通Java類中的相同。
只要確保您有文件頂部的jasper報告類的導入。
下面的示例從XML數據源構建報表。
public class JasperServlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
try {
String reportFile = "myJasperReport.jrxml";
File outputFile = new File("Report.pdf");
HashMap hm = new HashMap();
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory
.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory
.newDocumentBuilder();
Document document = documentBuilder.parse(new File("myXml.xml"));
// Compile the report
JasperReport report = JasperCompileManager
.compileReport(reportFile);
JRXmlDataSource xml = new JRXmlDataSource(document, "/xml/root");
// Fill the report
JasperPrint print = JasperFillManager.fillReport(report, hm, xml);
// Create an Exporter
JRExporter exporter = new JRPdfExporter();
exporter.setParameter(JRExporterParameter.OUTPUT_FILE, outputFile);
exporter.setParameter(JRExporterParameter.JASPER_PRINT, print);
// Export the file
exporter.exportReport();
} catch (Exception e) {
e.printStackTrace();
}
}
}
5
您可以準備Jasper文件並將其傳輸到客戶端。
bytes[] byteStream = JasperRunManager.runReportToPdf("myJasperReport.jasper",paramMap,databaseConn);
OutputStream outStream = servletResponse.getOutputStream();
response.setHeader("Content-Disposition","inline, filename=myReport.pdf");
response.setContentType("application/pdf");
response.setContentLength(byteStream.length);
outStream.write(bytes,0,bytes.length);
3
一個完整的方法來從servlet做到這一點是:
public void myServletMethod(HttpServletRequest request, HttpServletResponse response) throws IOException{
JasperReport jasperReport = null;
JasperDesign jasperDesign = null;
Map parameters = new HashMap();
String path = getServletContext().getRealPath("/WEB-INF/");
jasperDesign = JRXmlLoader.load(path+"/relative/path/to/MyReport.jrxml");
jasperReport = JasperCompileManager.compileReport(jasperDesign);
byte[] byteStream = JasperRunManager.runReportToPdf(jasperReport, parameters, **new DataSourceOfYourPreference**);
OutputStream outStream = response.getOutputStream();
response.setHeader("Content-Disposition","inline, filename=myReport.pdf");
response.setContentType("application/pdf");
response.setContentLength(byteStream.length);
outStream.write(byteStream,0,byteStream.length);
}
相關問題
- 1. JasperReports HTML報告分頁
- 2. 與JasperReports的增量報告
- 3. JasperReports:分組報告元素
- 4. JasperReports:動態報告生成
- 5. 使用JasperReports API創建子報告
- 6. 無法使用JasperReports生成PDF報告
- 7. 如何使用JasperReports API顯示報告
- 8. 使用JasperReports服務器生成報告
- 9. JasperReports:如何在jsp頁面中調用報告
- 10. JasperReports:如何在報告模板中調用java bean方法?
- 11. JasperReports子報表不顯示參數從主報告傳遞
- 12. 從REST API調用報告
- 13. 從CakePHP調用SSRS報告
- 14. Jasperreports多個子報告重疊
- 15. 複雜的報告與JPA和JasperReports
- 16. 報告組JasperReports空圖更改
- 17. JasperReports:不同方向的子報告
- 18. JasperReports服務器報告權限/角色
- 19. PHP生成報告(JasperReports)TCPDF錯誤:
- 20. JasperReports服務器 - 在調度程序生成報告時出錯
- 21. 從報告服務中的報告調用C#程序集
- 22. 從報告服務報告中調用C++ dll
- 23. 從JasperReports的HTML報告中刪除額外的空白
- 24. 從Crystal Reports移植企業一個報告到JasperReports框架
- 25. 使用servlet下載報告爲pdf
- 26. 使用JasperReports打印每個報告的應用程序版本
- 27. 從經典ASP調用SSRS報告
- 28. 從行動類調用birt報告
- 29. 從jsp調用Jasper Server報告
- 30. 從類方法調用(報告)功能
性能可以通過填充'.jasper'文件,而不是在編譯每個請求的報告得到改善。 – 2018-01-23 22:38:58