Grails渲染PDF文件
我试图在我的网页中呈现一个PDF文件,但是使用下面的语法,我得到了一个奇怪的字符组合Grails渲染PDF文件,pdf,grails,render,Pdf,Grails,Render,我试图在我的网页中呈现一个PDF文件,但是使用下面的语法,我得到了一个奇怪的字符组合 render file: new File ("path/to/file.pdf"), fileName: 'myPdfFile.pdf' 有人知道除了上面的那一行,我还需要添加什么吗 谢谢我认为Grails在默认情况下不会这么做 查看PDF呈现插件。看起来是最新的,但请确保它与您的Grails版本兼容 如果您使用的是Grails3,那么这可能是一个不错的选择 您是否尝试了建议的插件?我无法在项目中使用此依赖
render file: new File ("path/to/file.pdf"), fileName: 'myPdfFile.pdf'
有人知道除了上面的那一行,我还需要添加什么吗
谢谢我认为Grails在默认情况下不会这么做
查看PDF呈现插件。看起来是最新的,但请确保它与您的Grails版本兼容
如果您使用的是Grails3,那么这可能是一个不错的选择 您是否尝试了建议的插件?我无法在项目中使用此依赖项。1.0.0版本不存在,有2.0.0、2.0.2和2.0.3版本-但当我尝试使用它们时,项目编译失败 我已尝试下载git源代码并运行它们-网站已启动,但我也看到以下错误:
Grails Runtime Exception
Error Details
Error 404:
Servlet: grailsDispatcherServlet
URI: /
当我尝试访问特定控制器操作时,它的结尾如下:
java.lang.reflect.InvocationTargetException
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NullPointerException
at java.beans.Introspector.getPublicDeclaredMethods(Introspector.java:1337)
at java.beans.Introspector.getTargetMethodInfo(Introspector.java:1197)
at java.beans.Introspector.getBeanInfo(Introspector.java:426)
at java.beans.Introspector.getBeanInfo(Introspector.java:173)
at grails.plugins.rendering.document.RenderEnvironment.init(RenderEnvironment.groovy:31)
巧合的是,我昨天也遇到了同样的问题,但有些不同。我必须在一个新选项卡中从Grails表单加载PDF,使用POST方法访问PHP脚本,该脚本根据一些变量生成PDF 无论如何,我建议你检查你的标题。例如,如果获得二进制文件,则必须定义头文件。例如,我们有: 控制员/行动:
def generatesReport = {
def url = StaticContextService.app.config.grailsPath.urlLocalServer,
path = 'some/url/which/generates/this.pdf',
parameters = /* defining parameters bla bla bla */
def bytes = SendHttpService.getYourBinaryHere(url, path, parameters)
/* HERE IS MY ANSWER, properly */
response.setContentType('application/pdf')
response.setContentLength(bytes.length)
response.setHeader('Content-Disposition', 'inline; filename="yourPdfFile.pdf"')
ServletOutputStream outputStream = response.getOutputStream()
outputStream.write(bytes,0,bytes.length)
outputStream.flush()
outputStream.close()
} // end method
有许多方法可以定义标题,因此您需要验证哪些设置更适合您的需求(:
别忘了为依赖项添加必要的库。干杯!在Grails3中,您只需
render file: new File ("path/to/file.pdf")
提供的解释回答了您的问题。您应该接受它以结束此主题。:)