天天看点

Grails生成pdf

pdf的生成没有使用grails提供的pdf插件,依旧采用了itext生成pdf

在controller中导出pdf的action如下:

def exportPDF = {
        response.setHeader("Content-disposition", "attachment; filename=profitReport.pdf")
        response.contentType = "application/pdf"
        def out = response.outputStream
        def id = params.id
        exportPdfService.exportProfitReport(out,id)
        out.close()
}
           

在grails应用程序中写了一个service专门用于导出各个pdf,其中exportProfitReport()方法如下,

def exportProfitReport(OutputStream out,String id) {
        def document = new Document(PageSize.A4, 36, 36, 36, 36)
        PdfWriter.getInstance(document, out)
        document.open()

        ……
        document.close();
}
           

省略的部分用于构建pdf的页面布局,有点惨不忍睹,就不贴出了。

在使用itext时,最好对itext的类做些封装,便于简化开发。