Grails渲染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,那么这可能是一个不错的选择 您是否尝试了建议的插件?我无法在项目中使用此依赖

我试图在我的网页中呈现一个PDF文件,但是使用下面的语法,我得到了一个奇怪的字符组合

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")

提供的解释回答了您的问题。您应该接受它以结束此主题。:)