1

我的问题是,我们如何在没有响应的情况下创建图像形式的字节数组。目前我正在使用 .

response.setHeader('Content-length', image.imageSize)
            response.contentType = image.imageFormat // or the appropriate image content type
            response.outputStream << image.imageData
            response.outputStream.flush()

但它给出了错误,因为我们确实有一个请求对象,因为我正在通过后端作业运行它

4

1 回答 1

0

目前不知道您是如何创建 pdf 文件的,但一种方法是使用Grails Rendering Plugin生成 pdf。有了这个,您可以使用任何视图/模板来生成 pdf 文件。

要从后端发送这些 pdf,您需要:

一个看法:

<html>
    <head>...</head>
    <body>
        <h1>Your PDF Content</h2>
        <g:each in="${images}" var="image">
            <img src="${createLink(action:'displayImage', id:image.id)}" alt="${image.name}"/>
        </g:each>
    </body> 
</html>

控制器中的操作:

def displayImage = {
    def image = Image.get(params.id)
    response.setHeader("Content-disposition", "attachment; filename=${image.name}")
    response.contentType = image?.mimeType
    response.contentLength = image?.data.length
    response.outputStream.write(attachment?.data)
}

一个使用渲染的 pdf发送多部分邮件(使用邮件插件)的 grails 作业:

def execute() {
    def pdfBytes = pdfRenderingService.render(template: '/path/to/your/template', model: [images: yourImages]).toByteArray() 

    sendMail {
        multipart true
        to "yourmail"
        subject "yoursubject"
        body (view: "/path/to/your/mailview", model: yourModel) attachBytes "yourTitle.pdf", CH.config.grails.mime.types['pdf'], pdfBytes
    } 
}

代码不完整,只是演示了基础知识。

希望有帮助!

于 2012-12-04T11:14:37.323 回答