grails - 如何在Jasper报告中导出PDF报告

标签 grails browser jasper-reports download

我想将报告导出为pdf,它应该询问用户下载位置。我该怎么做?

这是我的代码:

def exportToPdf(JasperPrint jasperPrint,String path,request){

    String cur_time =System.currentTimeMillis();
    JRExporter pdfExporter = null;

    pdfExporter = new JRPdfExporter();

    log.debug("exporting to file..."+JasperExportManager.exportReportToPdfFile(jasperPrint, "C:\\pdfReport"+cur_time+".pdf"));

    return ;
}

在Jasper Controller 中:
/**
   * Generate a html response.
   */
  def generateResponse = {reportDef ->
    if (!reportDef.fileFormat.inline && !reportDef.parameters._inline) {
      response.setHeader("Content-disposition", "attachment; filename=\"" + reportDef.name + "." + reportDef.fileFormat.extension + "\"");
      response.contentType = reportDef.fileFormat.mimeTyp
      response.characterEncoding = "UTF-8"
      response.outputStream << reportDef.contentStream.toByteArray()
    } else {
      render(text: reportDef.contentStream, contentType: reportDef.fileFormat.mimeTyp, encoding: reportDef.parameters.encoding ? reportDef.parameters.encoding : 'UTF-8');
    }
  }

最佳答案

您是否看过Jasper Plugin?似乎已经为您构建了工具。就询问用户下载位置而言,浏览器具有一些 Controller 来控制如何从网页接收文件。您要控制下载位置是您的真正问题吗?

[更新]

在服务器上使用位置“c:\”在客户端上是而不是,这就是为什么它不下载的原因。

尝试这样的事情...

def controllerMethod = {
    def temp_file = File.createTempFile("jasperReport",".pdf") //<-- you don't have to use a temp file but don't forget to delete them off the server at some point.

    JasperExportManager.exportReportToPdfFile(jasperPrint, temp_file.absolutePath));

    response.setContentType("application/pdf")  //<-- you'll have to handle this dynamically at some point
    response.setHeader("Content-disposition", "attachment;filename=${temp_file.getName()}")
    response.outputStream << temp_file.newInputStream() //<-- binary stream copy to client



}

我还没有测试过,还有更好的方法来处理文件和流,但是我想您会明白的。

关于grails - 如何在Jasper报告中导出PDF报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6758162/

相关文章:

java - 使用 checkmarx 时 Servletoutputstream.write 存在 XSS 漏洞

Grails按键排序 map

grails - 如何使用H2内存数据库保存数据?

browser - 基于YouTube浏览器的上传

jasper-reports - JasperReports 中的分组记录

Java Maven Jasperreport 从 Eclipse 运行 好的,从 java - jar JRRuntimeException : Chart theme "eye.candy.sixties" not found

jquery - Grails动态更新模板 View 而无需Ajax

grails - grails 中的通用方法拦截(特别是 Controller )

java - 小程序在屏幕上的位置(x,y 坐标)

html - CSS 像素真的是一个绝对单位吗?也就是说,1 inch = 96px 是真的吗?