我正在尝试在我的网页中呈现PDF文件,但是使用下面的语法我会得到一个奇怪的字符组合。
render file: new File ("path/to/file.pdf"), fileName: 'myPdfFile.pdf'
有谁知道我需要添加多于上面的行?
由于
答案 0 :(得分:1)
答案 1 :(得分:1)
render file: new File ("path/to/file.pdf")
答案 2 :(得分:0)
您是否尝试过建议的插件?我无法在我的项目中使用此依赖项。 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)
答案 3 :(得分:0)
巧合的是,昨天我遇到了同样的问题,但有些不同。我必须在新选项卡中从Grails表单加载PDF,使用POST方法访问根据某些变量生成PDF的PHP脚本。
无论如何,我建议你检查你的标题。例如,如果获得二进制文件,则必须定义标头。所以,我们有例如:
控制器/操作:
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
有多种方法可以定义标题,因此您需要验证哪种设置更适合您的需求(:
不要忘记为依赖项添加必要的库。干杯!