如何在浏览器中显示动态报告而不下载到客户端驱动器?

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 中获取字节数组,而不保存到本地驱动器

从 iCloud 驱动器获取文件而不下载?

amazon s3 - 图像下载而不是在浏览器中显示

如何将 Azure blob 文件下载到下载文件夹中,而不是在浏览器中

SVN在浏览器中可以查看资源,在客户端报405错误

如何在 asp.net mvc 中将文件传递给客户端而不下载 Web 服务器上的文件?