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

问题描述 投票:0回答:2

我必须使用动态报告显示一些报告。我使用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到客户端驱动”的方法,但我需要在浏览器中显示它。

java jsp browser jasper-reports dynamic-reports
2个回答
1
投票

在您的文件中使用以下代码重定向到jasper调用页面,以便您的jasperPDF应该在新选项卡中打开而不是下载。

JasperInvocation.jsp =>您调用jasperReport的文件

<form method="POST" action="JasperInvocation.jsp" target="_blank">

0
投票

请找到以下代码,我在动态报告(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();

}
© www.soinside.com 2019 - 2024. All rights reserved.