Grails Base64到PDF - 内联呈现PDF

时间:2015-03-19 12:21:38

标签: grails pdf groovy

我有一个Grails控制器操作,它调用一个服务,该服务将返回包含PDF的base64表示的XML。这是一个(缩写)示例示例。

<response status="Success"><messages/><values><pages>8</pages></values><xml/><files><pdf name="FitnessApplication" content-type="application/pdf"><![CDATA[JVBERi0xLjQKJeL ... </files></response>

在我们解析之后,我想在浏览器中显示该PDF。到目前为止,我能够解码字符串并使用render方法的file属性进行渲染。这可以正确地提供PDF作为下载,但我希望它在浏览器中显示(内联)而不是文件下载。

Map responseMap = new XmlParserHelper().parse( formsResponse.payload )
byte[] decoded = responseMap.files.pdf.decodeBase64()
render( file: decoded, fileName: "${document}.pdf", contentType: "application/pdf",  )

我尝试将内容处置设置为渲染选项和标题映射,但似乎都没有。有谁知道我如何在浏览器中向用户提供此PDF?

2 个答案:

答案 0 :(得分:1)

只需在回复中发送即可。但是你需要自己添加标题。例如。类似的东西:

response.contentType = "application/pdf"
response.contentLength = FileUtils.copyFile(pdfFile, response.outputStream)

答案 1 :(得分:0)

cfrick 所说的为基础,这是我最后的解决方案。

// response data
byte[] pdfData = responseMap.files.pdf.decodeBase64()
response.contentType = "application/pdf"
response.setHeader("Content-disposition", "inline; filename='dan.pdf'")

// write to output 
OutputStream output = response.outputStream
output.write(pdfData);
output.close();