正确实施Grails导出插件以将GSP导出为PDF格式

时间:2013-04-16 16:38:23

标签: pdf grails export grails-plugin

我是使用STS 3.2(Grails版本2.2.0)的Grails中的一个相当新的开发人员,我有一个应用程序,我想将数据从GSP导出为PDF格式。我已经安装了Export 1.5插件并且有一个带有以下内容的reportController:

def pdf = { results->
    def table = results['tables'][params.reportNum.toInteger()]
    def headers = table?.getAt(0).collect{ it.key }
    def rows = table*.collect{ cleanNull(it.value.toString()) } //data  
    exportService.export("$params.renderAs", response.outputStream, headers, rows, parameters)
}

有人可以帮我正确连线吗?我知道exportService期望这样,但不确定我是否收集了所有需要的内容以使其工作:

export(字符串类型,OutputStream outputStream,List对象,Map格式化程序,Map参数)}

我希望我已经清楚了解我的问题......提前致谢!

1 个答案:

答案 0 :(得分:0)

该插件的示例以params.format作为导出类型。你params.renderAs的内容是什么?似乎该值必须是grails.mime.types的键之一。

if(params?.format && params.format != "html"){ 
    response.contentType = grailsApplication.config.grails.mime.types[params.format]
    response.setHeader("Content-disposition", "attachment; filename=books.${params.extension}")

    exportService.export(params.format, response.outputStream,Book.list(params), [:], [:]) 

}

因此,在您的情况下,renderAs应该有pdf


好的,那么查看ExportService和您的代码示例,我认为您要使用的方法的签名是:

export(String type, OutputStream outputStream, List objects, List fields, Map labels, Map formatters, Map parameters)
  • 对象:将要导出的对象列表
  • fields:要导出的对象中存在的字段名称
  • 标签:字段及其标签的地图
  • 格式化程序:可以是空地图
  • 参数:可以是空地图

考虑图书域类:

class Book {
    String title
    String author
}

您可以创建如下操作:

def pdf() {
    List fields = ["author", "title"]
    Map labels = [author: "Author", title: "Title"]
    exportService.export(params.format, response.outputStream, Book.list(params), fields, labels, [:], [:])
}