Open polaskj opened 11 years ago
having the same problem with grails 2.2.3
Hi bavicj,
I ended up getting the issue resolved after a few hours of hacking it. I cant remember exactly what the problem was but here is a snippet of what i ended up with. Maybe this will be of some help to you. (grails 2.2.3)
.... ACTION: def args = [template:"/batchList/pdf", model:[batchListInstance:batchListInstance]] pdfRenderingService.render(args,response)
GSP: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
....@polaskj, I am currently experiencing the same problem. I'm running grails 2.4.4. My research to date shows that Stream Closed
is due to unreadable files embedded in the HTML.
My HTML has this in it
<link rel="stylesheet" href="/Invoicer/assets/bootstrap.css?compile=false" />
and gives me the Stream Closed
problem. When I remove the line, all renders fine. My working hypothesis is that somehow Spring Security is preventing the rendering plugin from accessing the file.
I am having the same issue using Grails 3.1.0.RC1 and rendering:2.0.0-SNAPSHOT. Also using bootstrap. When the Bootstrap reference is removed it no longer throws the exception. Even with the exception being thrown the PDF still renders but contains no styles (all are contained in the same css file by asset-pipeline).
EDIT: When using a CDN for the Bootstrap files I get past this exception and to the "TableBox" issue. That leads me to believe its a compatibility issue with asset-pipeline or spring-security. My security config allows everyone access to assets, so it is configured correctly.
Hi all, take a look to the workaround described #33 , it might be fine for your needs
After upgrading my project from 2.1.2 to 2.2.3 (cleaning and retesting old functionality) plugin is throwing IOException but eventually renders pdf
[ controller logic @ end of action ] def args = [template:"pdf", model:[myDomainInstance:myDomainInstance]] pdfRenderingService.render(args+[controller:this],response)
[ Stacktrace ]
| Error java.io.IOException: Stream closed | Error at java.io.BufferedInputStream.getInIfOpen(BufferedInputStream.java:151) | Error at java.io.BufferedInputStream.read1(BufferedInputStream.java:273) | Error at java.io.BufferedInputStream.read(BufferedInputStream.java:334) | Error at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:283) | Error at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:325) | Error at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:177) | Error at java.io.InputStreamReader.read(InputStreamReader.java:184) | Error at org.xhtmlrenderer.css.parser.Lexer.zzRefill(Lexer.java:1634) | Error at org.xhtmlrenderer.css.parser.Lexer.yylex(Lexer.java:1865) | Error at org.xhtmlrenderer.css.parser.CSSParser.next(CSSParser.java:1798) | Error at org.xhtmlrenderer.css.parser.CSSParser.la(CSSParser.java:1810) | Error at org.xhtmlrenderer.css.parser.CSSParser.stylesheet(CSSParser.java:159) | Error at org.xhtmlrenderer.css.parser.CSSParser.parseStylesheet(CSSParser.java:89) | Error at org.xhtmlrenderer.context.StylesheetFactoryImpl.parse(StylesheetFactoryImpl.java:78) | Error at org.xhtmlrenderer.context.StylesheetFactoryImpl.parse(StylesheetFactoryImpl.java:95) | Error at org.xhtmlrenderer.context.StylesheetFactoryImpl.getStylesheet(StylesheetFactoryImpl.java:174) | Error at org.xhtmlrenderer.context.StyleReference.readAndParseAll(StyleReference.java:123) | Error at org.xhtmlrenderer.context.StyleReference.setDocumentContext(StyleReference.java:107) | Error at org.xhtmlrenderer.pdf.ITextRenderer.setDocument(ITextRenderer.java:175) | Error at org.xhtmlrenderer.pdf.ITextRenderer.setDocument(ITextRenderer.java:142) | Error at org.xhtmlrenderer.pdf.ITextRenderer$setDocument.call(Unknown Source) | Error at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45) | Error at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108) | Error at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:120) | Error at grails.plugin.rendering.pdf.PdfRenderingService.doRender(PdfRenderingService.groovy:36) | Error at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) | Error at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) | Error at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) | Error at java.lang.reflect.Method.invoke(Method.java:601) | Error at org.springsource.loaded.ri.ReflectiveInterceptor.jlrMethodInvoke(ReflectiveInterceptor.java:1259) | Error at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:272) | Error at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:52) | Error at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:49) | Error at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133) | Error at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:149) | Error at grails.plugin.rendering.RenderingService.render(RenderingService.groovy:43) | Error at grails.plugin.rendering.pdf.PdfRenderingService.render(PdfRenderingService.groovy) | Error at grails.plugin.rendering.RenderingService$render$1.callCurrent(Unknown Source) | Error at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:49) | Error at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133) | Error at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:149) | Error at grails.plugin.rendering.RenderingService.render(RenderingService.groovy:37) | Error at grails.plugin.rendering.pdf.PdfRenderingService.render(PdfRenderingService.groovy) | Error at grails.plugin.rendering.RenderingService.render(RenderingService.groovy:35) | Error at grails.plugin.rendering.pdf.PdfRenderingService.render(PdfRenderingService.groovy) | Error at grails.plugin.rendering.RenderingService$render$0.callCurrent(Unknown Source) | Error at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:49) | Error at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133) | Error at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141) | Error at grails.plugin.rendering.RenderingService.render(RenderingService.groovy:65) | Error at grails.plugin.rendering.pdf.PdfRenderingService.render(PdfRenderingService.groovy) | Error at grails.plugin.rendering.RenderingService$render.call(Unknown Source) | Error at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45) | Error at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108) | Error at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:120) | Error at edu.harvard.hums.BatchListController.print(BatchListController.groovy:237) | Error at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) | Error at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) | Error at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) | Error at java.lang.reflect.Method.invoke(Method.java:601) | Error at org.springsource.loaded.ri.ReflectiveInterceptor.jlrMethodInvoke(ReflectiveInterceptor.java:1259) | Error at org.codehaus.groovy.grails.web.servlet.mvc.MixedGrailsControllerHelper.invoke(MixedGrailsControllerHelper.java:69) | Error at grails.plugin.cache.web.ProxyAwareMixedGrailsControllerHelper.invoke(ProxyAwareMixedGrailsControllerHelper.java) | Error at org.codehaus.groovy.grails.web.servlet.mvc.AbstractGrailsControllerHelper.handleAction(AbstractGrailsControllerHelper.java:343) | Error at grails.plugin.cache.web.ProxyAwareMixedGrailsControllerHelper.handleAction(ProxyAwareMixedGrailsControllerHelper.java) | Error at org.codehaus.groovy.grails.web.servlet.mvc.AbstractGrailsControllerHelper.executeAction(AbstractGrailsControllerHelper.java:226) | Error at grails.plugin.cache.web.ProxyAwareMixedGrailsControllerHelper.executeAction(ProxyAwareMixedGrailsControllerHelper.java) | Error at org.codehaus.groovy.grails.web.servlet.mvc.AbstractGrailsControllerHelper.handleURI(AbstractGrailsControllerHelper.java:192) | Error at grails.plugin.cache.web.ProxyAwareMixedGrailsControllerHelper.handleURI(ProxyAwareMixedGrailsControllerHelper.java) | Error at org.codehaus.groovy.grails.web.servlet.mvc.AbstractGrailsControllerHelper.handleURI(AbstractGrailsControllerHelper.java:116) | Error at grails.plugin.cache.web.ProxyAwareMixedGrailsControllerHelper.handleURI(ProxyAwareMixedGrailsControllerHelper.java) | Error at org.codehaus.groovy.grails.web.servlet.mvc.SimpleGrailsController.handleRequest(SimpleGrailsController.java:72) | Error at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48) | Error at org.codehaus.groovy.grails.web.servlet.GrailsDispatcherServlet.doDispatch(GrailsDispatcherServlet.java:328) | Error at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852) | Error at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) | Error at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778) | Error at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) | Error at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) | Error at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) | Error at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) | Error at grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PageFragmentCachingFilter.java:195) | Error at grails.plugin.cache.web.filter.simple.MemoryPageFragmentCachingFilter.doFilter(MemoryPageFragmentCachingFilter.java) | Error at grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter.java:63) | Error at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) | Error at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259) | Error at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) | Error at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) | Error at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:70) | Error at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) | Error at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) | Error at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:70) | Error at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) | Error at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) | Error at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:70) | Error at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) | Error at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) | Error at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749) | Error at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:487) | Error at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:412) | Error at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:339) | Error at org.codehaus.groovy.grails.web.util.WebUtils.forwardRequestForUrlMappingInfo(WebUtils.java:314) | Error at org.codehaus.groovy.grails.web.util.WebUtils.forwardRequestForUrlMappingInfo(WebUtils.java:279) | Error at org.codehaus.groovy.grails.web.util.WebUtils.forwardRequestForUrlMappingInfo(WebUtils.java:270) | Error at org.codehaus.groovy.grails.web.mapping.filter.UrlMappingsFilter.doFilterInternal(UrlMappingsFilter.java:222) | Error at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) | Error at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) | Error at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) | Error at org.codehaus.groovy.grails.web.sitemesh.GrailsPageFilter.obtainContent(GrailsPageFilter.java:206) | Error at org.codehaus.groovy.grails.web.sitemesh.GrailsPageFilter.doFilter(GrailsPageFilter.java:152) | Error at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) | Error at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) | Error at javax.servlet.FilterChain$doFilter.call(Unknown Source) | Error at org.grails.plugin.resource.DevModeSanityFilter.doFilter(DevModeSanityFilter.groovy:44) | Error at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) | Error at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) | Error at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:369) | Error at org.springframework.security.web.authentication.switchuser.SwitchUserFilter.doFilter(SwitchUserFilter.java:178) | Error at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) | Error at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109) | Error at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83) | Error at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) | Error at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97) | Error at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) | Error at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78) | Error at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) | Error at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:119) | Error at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) | Error at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54) | Error at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) | Error at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:187) | Error at org.codehaus.groovy.grails.plugins.springsecurity.RequestHolderAuthenticationFilter.doFilter(RequestHolderAuthenticationFilter.java:40) | Error at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) | Error at org.codehaus.groovy.grails.plugins.springsecurity.MutableLogoutFilter.doFilter(MutableLogoutFilter.java:79) | Error at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) | Error at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79) | Error at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) | Error at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:168) | Error at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) | Error at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259) | Error at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) | Error at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) | Error at org.codehaus.groovy.grails.web.servlet.mvc.GrailsWebRequestFilter.doFilterInternal(GrailsWebRequestFilter.java:69) | Error at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) | Error at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) | Error at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) | Error at org.codehaus.groovy.grails.web.filters.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:66) | Error at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) | Error at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) | Error at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) | Error at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) | Error at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) | Error at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) | Error at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259) | Error at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) | Error at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) | Error at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) | Error at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) | Error at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) | Error at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) | Error at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) | Error at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) | Error at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1009) | Error at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) | Error at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) | Error at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) | Error at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) | Error at java.lang.Thread.run(Thread.java:722)