Exporting page or space to PDF fails and causes high load or OutOfMemory Error
Platform notice: Server and Data Center only. This article only applies to Atlassian products on the Server and Data Center platforms.
Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.
*Except Fisheye and Crucible
Problem
- When exporting a page or space to PDF, it doesn't succeed and causes a high load on Confluence until it triggers an OutOfMemory Error.
When exporting a single page, the process hangs and ultimately fails. The "System Error" page is displayed and the following appears in the
atlassian-confluence.log
:2012-04-19 17:22:06,698 ERROR [http-8080-3] [[Standalone].[localhost].[/confluence].[action]] log Servlet.service() for servlet action threw exception java.lang.OutOfMemoryError: Java heap space at java.util.LinkedList.addBefore(LinkedList.java:778) at java.util.LinkedList.add(LinkedList.java:198) at org.xhtmlrenderer.css.newmatch.CascadedStyle.addProperties(CascadedStyle.java:148) at org.xhtmlrenderer.css.newmatch.CascadedStyle.<init>(CascadedStyle.java:135) at org.xhtmlrenderer.css.newmatch.Matcher.getPageCascadedStyle(Matcher.java:121) at org.xhtmlrenderer.context.StyleReference.getPageStyle(StyleReference.java:203) at org.xhtmlrenderer.layout.Layer.createPageBox(Layer.java:794) at org.xhtmlrenderer.layout.Layer.addPage(Layer.java:764) at org.xhtmlrenderer.layout.Layer.addPagesUntilPosition(Layer.java:875) at org.xhtmlrenderer.layout.Layer.getPage(Layer.java:861) at org.xhtmlrenderer.layout.Layer.getFirstPage(Layer.java:805) at org.xhtmlrenderer.render.BlockBox.layout(BlockBox.java:774) at org.xhtmlrenderer.render.BlockBox.layout(BlockBox.java:735) at org.xhtmlrenderer.pdf.ITextRenderer.layout(ITextRenderer.java:209) at com.atlassian.confluence.extra.flyingpdf.FlyingSaucerXmlToPdfConverter.convertXhtmlToPdf(FlyingSaucerXmlToPdfConverter.java:92) at com.atlassian.confluence.extra.flyingpdf.FlyingSaucerXmlToPdfConverter.convertXhtmlToPdf(FlyingSaucerXmlToPdfConverter.java:38) at com.atlassian.confluence.extra.flyingpdf.FlyingSaucerPdfExporterService.createPdfForPage(FlyingSaucerPdfExporterService.java:78) at com.atlassian.confluence.extra.flyingpdf.ExportPageAsPdfAction.execute(ExportPageAsPdfAction.java:28) ....
When exporting a space to PDF, it becomes stuck at Begin conversion of intermediate HTML to PDF:
The following appears in theatlassian-confluence.log
:2012-04-19 17:02:40,878 ERROR [Long running task: PDF Space Export] [content.render.xhtml.DefaultRenderer] render Error rendering content for view: RuntimeException occurred while performing an XHTML storage transformation (null) -- referer: http://localhost:8080/confluence/spaces/flyingpdf/flyingpdf.action?key=SBX | url: /confluence/spaces/flyingpdf/doflyingpdf.action | userName: admin | action: doflyingpdf com.atlassian.confluence.content.render.xhtml.XhtmlException: RuntimeException occurred while performing an XHTML storage transformation (null) at com.atlassian.confluence.content.render.xhtml.storage.StorageXhtmlTransformer.transform(StorageXhtmlTransformer.java:60) at com.atlassian.confluence.content.render.xhtml.TransformerChain.transform(TransformerChain.java:41) at com.atlassian.confluence.content.render.xhtml.PluggableTransformerChain.transform(PluggableTransformerChain.java:53) at com.atlassian.confluence.content.render.xhtml.DefaultRenderer.render(DefaultRenderer.java:63) at com.atlassian.confluence.content.render.xhtml.DefaultRenderer.render(DefaultRenderer.java:51) at com.atlassian.confluence.extra.flyingpdf.html.RenderedXhtmlBuilder.renderToHtml(RenderedXhtmlBuilder.java:377) at com.atlassian.confluence.extra.flyingpdf.html.RenderedXhtmlBuilder.renderContentTreeNodes(RenderedXhtmlBuilder.java:346) at com.atlassian.confluence.extra.flyingpdf.html.RenderedXhtmlBuilder.buildHtml(RenderedXhtmlBuilder.java:134) at com.atlassian.confluence.extra.flyingpdf.FlyingSaucerPdfExporterService.createPdfForSpace(FlyingSaucerPdfExporterService.java:50) at com.atlassian.confluence.extra.flyingpdf.PdfExportLongRunningTask$1.doInTransactionWithoutResult(PdfExportLongRunningTask.java:70) at org.springframework.transaction.support.TransactionCallbackWithoutResult.doInTransaction(TransactionCallbackWithoutResult.java:33) at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:128) at com.atlassian.confluence.extra.flyingpdf.PdfExportLongRunningTask.runInternal(PdfExportLongRunningTask.java:52) at com.atlassian.confluence.util.longrunning.ConfluenceAbstractLongRunningTask.run(ConfluenceAbstractLongRunningTask.java:21) at com.atlassian.confluence.util.longrunning.ManagedTask.run(ManagedTask.java:35) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) Caused by: java.lang.NullPointerException at com.atlassian.confluence.content.render.xhtml.editor.macro.DefaultPlaceholderUrlFactory.getUrlForErrorPlaceholder(DefaultPlaceholderUrlFactory.java:73) at com.atlassian.confluence.content.render.xhtml.transformers.TransformErrorToHtmlPlaceholder.handle(TransformErrorToHtmlPlaceholder.java:54) at com.atlassian.confluence.content.render.xhtml.transformers.DefaultFragmentTransformer.transform(DefaultFragmentTransformer.java:124) at com.atlassian.confluence.content.render.xhtml.storage.StorageXhtmlTransformer.transform(StorageXhtmlTransformer.java:43) ... 20 more
Cause
This is normally caused by an incompatible or problematic PDF stylesheet. Particularly the following CSS, if the value for margin
is bigger than 5in:
@page
{
margin: 5.5in;
}
This bug is being tracked at CONF-25278 - Getting issue details... STATUS .
Workaround
Remove or reset the PDF stylesheets. You can base your customisations on the default CSS rules of the PDF stylesheet: confluencedefaultpdf.css.
Any rule defined in that stylesheet can be customised.