Grails:从GSP生成PDF

时间:2015-03-19 23:09:00

标签: grails groovy

我的GSP页面包含多个表格以及其他一些HTML元素,例如输入文本字段和标题<h1> <h2>文本。

我希望在生成的文本中捕获所有这些信息。

到目前为止,我看到的示例仅适用于生成一个表。

是否有快速方法从GSP中已填充的所有数据中生成PDF?

我正在使用导出插件。

compile ':export:1.6'

以下是我到目前为止尝试的示例代码。

它绘制一个带标题的表,行中没有数据。

def myPDFexport () {
        String userNumber = params.UserInfoInstance;

        UserInfo userObj = UserInfo.findByNumber(userNumber);

        params.format = "pdf";
        params.extension = "pdf"
        List fields = ["User ID", "User Name", "User Password"]
        Map labels = [userID: "User ID", userName: "User Name", userPW: "User Password"]

        if(params?.format && params.format != "html"){
            response.contentType = grailsApplication.config.grails.mime.types[params.format]
            response.setHeader("Content-disposition", "attachment; filename=${woNumber}.${params.extension}")
            exportService.export(params.format, response.outputStream, userObj.list(params), fields, labels, [:], [:])
        }
    }

我几乎迷失在此,因为我是Grails的新手,也没有以前的PDF生成经验。

如果可能,请提供一些示例代码。

2 个答案:

答案 0 :(得分:6)

有很多解决方案可以创建PDF。

作为第一个简单方法,您应该查看Grails rendering plugin

您可以使用任何视图或模板生成pdf(或图像)。

将插件添加到项目后,您可以向控制器添加这样的操作:

def createPdfReport = {
    renderPdf(template: '/templates/pdf/yourtemplate', model: yourmodel, filename: "yourTitle")
}

它将使用指定的模板生成pdf并将其作为响应发送给客户端。

有关详细信息,请查看插件文档。

答案 1 :(得分:0)

在您的Grails-app&gt; BuildConfig&gt;中添加以下内容

    if( !frame1.empty())
    imshow("1", frame1);
    if( !frame2.empty())
    imshow("2", frame2);