【问题标题】:Call Jasper file from service从服务中调用 Jasper 文件
【发布时间】:2016-10-14 15:41:43
【问题描述】:

我是 Jasper 的新手,我想尝试从我的应用程序中使用 jasper 生成 pdf 文件。 这是场景:

我有一个在 iReport 中构建的文件 (reportEmployee.jrxml),在我的应用程序中,我有一个链接,如果我们单击该链接,我的应用程序将在 pdf 文件中创建报告并将其保存到我的本地存储。

我已经尝试过 excel 和 word 并且它可以工作,只有 pdf 让我感到困惑。

这是代码
1.关于jsp文件

<td><a href="<c:url value ="/savepdf"/>">Save to PDF</a></td>
<td><a href="<c:url value = "/save"/>">Save to Excel</a></td>
<td><a href="<c:url value = "/saveword"/>">Save to Word</a></td>

2。控制器

@RequestMapping("/savepdf")
public String dataEmployeePdf()
{
    employeeManager.dataEmployeePDFDownload();
    return "employ/editEmployeeList";
}

3。关于EmployeeManagerImpl(EmployeeManager的实现)

@Override
public void dataEmployeePDFDownload() {
    // TODO Auto-generated method stub
    try
    {

        File file = new File("report/reportEmployee.jrxml"); 
        String absolutePath = file.getAbsolutePath();
        InputStream input = new FileInputStream(new File(absolutePath));
        JasperReport jasperReport = JasperCompileManager.compileReport(input);
        JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null);
        JasperExportManager.exportReportToPdf(jasperPrint);
    }
    catch(JRException ex)
    {
        ex.getMessage();
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
} 

我不需要通过我的应用程序从数据库发送数据,因为我已经制作了该文件(employeeReport.jrxml)来自动从数据库中获取数据。 保存到word和保存到excel的情况相同,当我们单击该链接时,它将像这样将文件写入本地存储

有人可以帮助我吗?我希望我没有转发这个 谢谢

【问题讨论】:

    标签: java spring pdf


    【解决方案1】:

    要下载文件,您必须将内容传递给response.getOutputStream()。您可以为响应设置其他信息,例如用于设置文件名、编码等的标头信息或设置文件内容类型。

     @RequestMapping("/savepdf")
        public void dataEmployeePdf(HttpServletResponse response) {
            try {
    
                File file = new File("report/reportEmployee.jrxml");
                String absolutePath = file.getAbsolutePath();
                InputStream input = new FileInputStream(new File(absolutePath));
                JasperReport jasperReport = JasperCompileManager.compileReport(input);
                JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null);
                JasperExportManager.exportReportToPdfStream(jasperPrint,response.getOutputStream());
            } catch (JRException ex) {
                ex.getMessage();
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    

    【讨论】:

    • 请允许我尝试一下,伙计,但是将发送到此方法的 HttpServletResponse 是什么?
    • 春天将响应注入到方法中
    猜你喜欢
    • 2015-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-22
    相关资源
    最近更新 更多