Skip to main content
Participant
November 30, 2022
Question

ice.storm.print.PageDecoration not found by document [78]

  • November 30, 2022
  • 3 replies
  • 489 views

Hello,

 

I have a simple coldfusion file that wraps html in a cfdocument tag and then saves it to a PDF file.  This has worked for years on previous versions as well as in ColdFusion 2021 since we upgraded earlier this year.  After a recent ColdFusion 2021 update the cfdocument is now throwing the error "ice.storm.print.PageDecoration not found by document" when it tries to generate the PDF file. Am I missing ome sort of Java library that handles the PDF or does anyone else have any ideas as to what has happened to cause the error?

 

 

Message

ice.storm.print.PageDecoration not found by document [78]
StackTracejava.lang.ClassNotFoundException: ice.storm.print.PageDecoration not found by document [78] at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1597) at org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:79) at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1982) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) at coldfusion.tagext.document.DocumentTag.doStartTag(DocumentTag.java:1321) at cfprintcandidateV22ecfm1315926517.runPage(F:\websites\GildanBangledash\hradmin\printcandidateV2.cfm:35) at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:257) at coldfusion.tagext.lang.IncludeTag.handlePageInvoke(IncludeTag.java:749) at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:578) at coldfusion.runtime.CfJspPage._emptyTcfTag(CfJspPage.java:5201) at cfApplication2ecfc940188772$funcONREQUEST.runFunction(F:\websites\GildanBangledash\hradmin\Application.cfc:85) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:623) at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:553) at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:516) at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:95) at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:463) at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:438) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:310) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:975) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:696) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:503) at coldfusion.runtime.AppEventInvoker.invoke(AppEventInvoker.java:115) at coldfusion.runtime.AppEventInvoker.onRequest(AppEventInvoker.java:308) at coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:569) at coldfusion.filter.RequestMonitorFilter.invoke(RequestMonitorFilter.java:43) at coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java:40) at coldfusion.filter.PathFilter.invoke(PathFilter.java:162) at coldfusion.filter.IpFilter.invoke(IpFilter.java:45) at coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:97) at coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28) at coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:38) at coldfusion.filter.NoCacheFilter.invoke(NoCacheFilter.java:60) at coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38) at coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22) at coldfusion.filter.CachingFilter.invoke(CachingFilter.java:62) at coldfusion.CfmServlet.service(CfmServlet.java:231) at coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:311) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:46) at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:47) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:377) at org.apache.coyote.ajp.AjpProcessor.service(AjpProcessor.java:463) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:889) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1743) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.base/java.lang.Thread.run(Thread.java:834)
    This topic has been closed for replies.

    3 replies

    BKBK
    Community Expert
    Community Expert
    December 4, 2022
    quote

     ...This has worked for years on previous versions as well as in ColdFusion 2021 since we upgraded earlier this year.  After a recent ColdFusion 2021 update the cfdocument is now throwing the error "ice.storm.print.PageDecoration not found by document" when it tries to generate the PDF file. Am I missing ome sort of Java library that handles the PDF...?

     

    By @jeffp80876634

     

    A suggestion inspired by the information in your question:

    • Open the cfpm prompt;
    • Run the command install all
      (Assuming Windows Operating System, this is equivalent to:
      - opening the command prompt CMD as administrator;
      - navigating using cd command to {CF_HOME_DIR}\cfusion\bin;
      - running the command cfpm, followed by the command install all )

     

    Charlie Arehart
    Community Expert
    Community Expert
    December 3, 2022

    Jeff, was that update 5? If so, it did have some unusual changes unlike prior ones--and the technote for it did not indicate quite all the info that has come out since, including from Adobe.

     

    For example, and as discussed in another thread (that I see you were in fact involved in) from about a month ago, Adobe recommended clearing the felix-cache folder--to which I asked them about using the cfpm purgecache option instead (but got no reply). All that's in addition to separately clearing the cfclasses folder (both to be done while cf is down), also discussed there. Had you yet tried those?

     

    Then there's also the longstanding possible issue that you simply had some error DURING the update. I have a post with the needed (and not obvious) details on that, which has been helping people for years to resolve "odd problems" after an update. 

     

    Can you try those and let us know if they help or not?

    /Charlie (troubleshooter, carehart. org)
    BKBK
    Community Expert
    Community Expert
    December 4, 2022

    An update from my own research on the subject.

    Funny that Charlie should mention CF2021 Update 5.  The release notes show that the update interferred with cfdocument in at least 2 ways.

     

    • CF-4212745
      cfdocument fails to embed registered fonts in PDF files, resulting in a PDF with the default font.
    • CF-4212298
      Unable to generate a PDF using cfdocument and cfhtmltopdf on a REST service.

     

    I don't remember the details, but would imagine that the exception I had had to do with REST. Perhaps the ClassNotFoundException you're getting has to do with a missing embedded font. Does the HTML in your cfdocument use any special fonts?

    Charlie Arehart
    Community Expert
    Community Expert
    December 4, 2022

    Or again just clearing cfclasses and the Felix-cache folders, as discussed in my previous note. Can you confirm you've done that, while cf is down

    /Charlie (troubleshooter, carehart. org)
    BKBK
    Community Expert
    Community Expert
    December 3, 2022

    The following excerpt from the stacktrace reveals the probable cause of the error:

    at cfprintcandidateV22ecfm1315926517.runPage(F:\websites\GildanBangledash\hradmin\printcandidateV2.cfm:35) 
    at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:257) 
    at coldfusion.tagext.lang.IncludeTag.handlePageInvoke(IncludeTag.java:749) 
    at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:578) 
    at coldfusion.runtime.CfJspPage._emptyTcfTag(CfJspPage.java:5201) 
    at cfApplication2ecfc940188772$funcONREQUEST.runFunction(F:\websites\GildanBangledash\hradmin\Application.cfc:85) 
    at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:623) 
    ...
    at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:553) 
    at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:516) 
    at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:95) 
    at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:463) 
    at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:438) 
    at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:310) 
    at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:975) 
    at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:696) 
    at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:503) 
    at coldfusion.runtime.AppEventInvoker.invoke(AppEventInvoker.java:115) 
    at coldfusion.runtime.AppEventInvoker.onRequest(AppEventInvoker.java:308) 
    at coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:569) 
    ...

     

    You should be using onRequestStart in Application.cfc, not onRequest.

     

    Charlie Arehart
    Community Expert
    Community Expert
    December 3, 2022

    Bkbk, I'm curious why you would assert that's incorrect for Jeff to have used? I don't see a connection at all. Can you elaborate?

     

    Note also that Jeff said this code worked prior to the latest update. I don't see a connection between that choice and the recent update. I do have different suggestions for Jeff that I'll offer in another reply. 

    /Charlie (troubleshooter, carehart. org)
    BKBK
    Community Expert
    Community Expert
    December 3, 2022
    quote

    Bkbk, I'm curious why you would assert that's incorrect for Jeff to have used? I don't see a connection at all. Can you elaborate?

     


    By @Charlie Arehart

     

    Charlie, I too had a strange ClassNotFoundException immediately after I applied ColdFusion 2021 Update 5. The exception went away after I commented out the onRequest event-handler.

     

    That said, I share the view that such ClassNotFoundExceptions may imply a bug. I in fact have been testing similar cases. But I am so far unable to reproduce them.