gpt4 book ai didi

java - Grails 渲染 PDF 插件返回 NullPointerException

转载 作者:行者123 更新时间:2023-12-02 05:01:33 28 4
gpt4 key购买 nike

我正在尝试使用渲染插件渲染 pdf 文件。我的 Controller 代码是:

def toPDF(){
DomainClass domainClass = DomainClass.get(params.id)


try{
renderPdf(template: "/domainClass/pdf", model: [domain: domainClass], filename: System.currentTimeMillis().toString() + "_" + domainClass.id.toString() + ".pdf")
}catch(e){
redirect action: "error"
}

}

在开发模式下,可以正常工作。但在生产中,此操作会抛出 NullPointerException

    2015-01-30 11:51:40,393 [http-apr-8080-exec-48] ERROR StackTrace  - Full Stack Trace:
java.lang.NullPointerException
at org.xhtmlrenderer.swing.NaiveUserAgent.getBinaryResource(NaiveUserAgent.java:228)
at org.xhtmlrenderer.pdf.ITextFontResolver.importFontFaces(ITextFontResolver.java:97)
at org.xhtmlrenderer.pdf.ITextRenderer.setDocument(ITextRenderer.java:178)
at org.xhtmlrenderer.pdf.ITextRenderer.setDocument(ITextRenderer.java:142)
at grails.plugin.rendering.pdf.PdfRenderingService.doRender(PdfRenderingService.groovy:36)
at grails.plugin.rendering.RenderingService.render(RenderingService.groovy:43)
at grails.plugin.rendering.RenderingService.render(RenderingService.groovy:37)
at grails.plugin.rendering.RenderingService.render(RenderingService.groovy:35)
at grails.plugin.rendering.RenderingService.render(RenderingService.groovy:65)
at RenderingGrailsPlugin$_closure3.doCall(RenderingGrailsPlugin.groovy:59)
at plano.ensino.PlanoController.toPDF(PlanoController.groovy:33)
at grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PageFragmentCachingFilter.java:198)
at grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter.java:63)

我已经尝试过这种模式:

def render = g.render(template: "/domainClass/pdf",
model: [domain: domain])

ITextRenderer renderer = new ITextRenderer()
ByteArrayOutputStream baos = new ByteArrayOutputStream()
byte[] b
renderer.setDocumentFromString(render.toString());
renderer.layout()
renderer.createPDF(baos)
b = baos.toByteArray()
def filename = "file.pdf"

response.setContentType("application/pdf")
response.setHeader("Content-disposition", "attachment; filename=${filename}")
response.setContentLength(b.length)
response.getOutputStream().write(b)

我该如何解决这个问题?

最佳答案

当我删除 css 文件中的自定义字体时,这个问题得到了解决。我将这些字体更改为默认的无衬线字体,现在一切正常。

关于java - Grails 渲染 PDF 插件返回 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28237595/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com