如何在浏览器中显示动态报告而不下载到客户端驱动器?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在浏览器中显示动态报告而不下载到客户端驱动器?相关的知识,希望对你有一定的参考价值。
我必须使用动态报告显示一些报告。我使用NetBeans和Tomcat 7.最终,所有必须上传到云OpenShift。我使用DynamicReports创建简单的报告(代码片段):
Connection conn=null;
try {
Class.forName(DBConnStrings.driver);
conn = DriverManager.getConnection(DBConnStrings.url + DBConnStrings.dbName+DBConnStrings.sslState, DBConnStrings.userName, DBConnStrings.password);
} catch (Exception e) {
e.printStackTrace();
}
JasperReportBuilder report = DynamicReports.report();
report
.columns(
Columns.column("Tank Id", "id", DataTypes.integerType()),
Columns.column("Tank Name", "name", DataTypes.stringType()),
Columns.column("Label", "label", DataTypes.stringType()),
Columns.column("Description", "descrshort", DataTypes.stringType()));
report.setDataSource("SELECT id, name, label, descrshort FROM "+ DBConnStrings.dbName +".tbltankslist", conn);
try {
//show the report
//report.show();
//export the report to a pdf file
report.toPdf(new FileOutputStream("c:/report.pdf"));
} catch (DRException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
此代码位于Servlet中。有用。我首先得到JasperViewer,在我的硬盘上得到report.pdf。但我不想要它。首先我不想看JasperViewer,其次我不想将文件下载到客户端硬盘。如何仅在网络浏览器中显示报告?
Here is the question Jasper Reports.这是关于jasper报告+ iReport,我不知道如何将这些信息用于DynamicReports - 起初,第二,还有“下载pdf到客户端驱动”的方法,但我需要在浏览器中显示它。
答案
在您的文件中使用以下代码重定向到jasper调用页面,以便您的jasperPDF应该在新选项卡中打开而不是下载。
JasperInvocation.jsp =>您调用jasperReport的文件
<form method="POST" action="JasperInvocation.jsp" target="_blank">
另一答案
请找到以下代码,我在动态报告(Jasper Api)中实现,它为我工作: -
@RequestMapping(value="/pdfDownload", method = RequestMethod.GET)
public void getPdfDownload(HttpServletResponse response) {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
report().columns().setDataSource().show()
.toPdf(buffer);
byte[] bytes = buffer.toByteArray();
InputStream inputStream = new ByteArrayInputStream (bytes);
IOUtils.copy(inputStream, response.getOutputStream());
response.setHeader("Content-Disposition", "attachment; filename=Accepted1.pdf");
response.flushBuffer();
}
以上是关于如何在浏览器中显示动态报告而不下载到客户端驱动器?的主要内容,如果未能解决你的问题,请参考以下文章
从当前打开的从 Sharepoint 下载的 Word 文档 .docm 中获取字节数组,而不保存到本地驱动器