-
Type:
Bug
-
Resolution: Unresolved
-
Priority:
Low
-
None
-
Affects Version/s: 8.3.4, 8.5.4, 7.19.17
-
Component/s: Page - Export / Import
-
8
-
Severity 3 - Minor
-
1
Issue Summary
When exporting to PDF a page which includes a large dimensions image, it fails to be exported.
This is reproducible on Data Center: yes
Steps to Reproduce
- Create a new Confluence page
- Add the attached file as an image: BLANK.png
( width: 30000 and height: 11300) - Export this page to PDF (Page tools > Export to PDF)
Expected Results
The PDF is created.
Actual Results
PDF fails to be created and user receives a "System Error" instead.
When enabled DEBUG levels for com.atlassian.confluence.extra.flyingpdf and
com.atlassian.confluence.impl.util.sandbox classes, the following exception can be observed in the atlassian-confluence.log file:
2023-12-21 09:16:56,489 INFO [sandbox-logger] [impl.util.sandbox.ConversionSandbox] lambda$buildConfig$0 worker1: Exception in thread \"main\" java.lang.RuntimeException: Failed to create the PDF document: /var/atlassian/application-data/confluence/temp/pdfexport-20231221-211223-0916-1/Page854 30000_18b29ef3d6294359bdfbc8bc001737a2-211223-0916-2.pdf at com.atlassian.confluence.extra.flyingpdf.sandbox.SandboxPdfConversionTask.createPdfFile(SandboxPdfConversionTask.java:85) at com.atlassian.confluence.extra.flyingpdf.sandbox.SandboxPdfConversionTask.apply(SandboxPdfConversionTask.java:49) at com.atlassian.confluence.extra.flyingpdf.sandbox.SandboxPdfConversionTask.apply(SandboxPdfConversionTask.java:34) at com.atlassian.confluence.impl.util.sandbox.SandboxServerWorker.processNextMessage(SandboxServerWorker.java:53) at com.atlassian.confluence.impl.util.sandbox.SandboxServer.run(SandboxServer.java:36) at com.atlassian.confluence.impl.util.sandbox.SandboxServer.main(SandboxServer.java:56) Caused by: java.lang.RuntimeException: Failed to read image at com.atlassian.confluence.extra.flyingpdf.impl.LightITextFSImage.getImage(LightITextFSImage.java:219) at org.xhtmlrenderer.pdf.ITextOutputDevice.drawImage(ITextOutputDevice.java:828) at org.xhtmlrenderer.pdf.ITextImageElement.paint(ITextImageElement.java:72) at org.xhtmlrenderer.pdf.ITextOutputDevice.paintReplacedElement(ITextOutputDevice.java:199) at org.xhtmlrenderer.layout.Layer.paintReplacedElement(Layer.java:540) at org.xhtmlrenderer.layout.Layer.paintReplacedElements(Layer.java:497) at org.xhtmlrenderer.layout.Layer.paintAsLayer(Layer.java:471) at org.xhtmlrenderer.render.BlockBox.paintInline(BlockBox.java:265) at org.xhtmlrenderer.layout.Layer.paintInlineContent(Layer.java:274) at org.xhtmlrenderer.layout.Layer.paint(Layer.java:332) at org.xhtmlrenderer.pdf.ITextRenderer.paintPage(ITextRenderer.java:432) at org.xhtmlrenderer.pdf.ITextRenderer.writePDF(ITextRenderer.java:380) at org.xhtmlrenderer.pdf.ITextRenderer.createPDF(ITextRenderer.java:333) at org.xhtmlrenderer.pdf.ITextRenderer.createPDF(ITextRenderer.java:265) at com.atlassian.confluence.extra.flyingpdf.sandbox.SandboxPdfConversionTask.createPdfFile(SandboxPdfConversionTask.java:81) ... 5 more Caused by: java.lang.RuntimeException: Failed to read image at com.atlassian.confluence.extra.flyingpdf.impl.LightITextFSImage.getImage(LightITextFSImage.java:212) ... 19 more Caused by: java.net.MalformedURLException: no protocol: /confluence/download/attachments/1146885/BLANK.png?version=1&modificationDate=1703150098857&api=v2 at java.base/java.net.URL.<init>(URL.java:645) at java.base/java.net.URL.<init>(URL.java:541) at java.base/java.net.URL.<init>(URL.java:488) at com.atlassian.confluence.extra.flyingpdf.impl.LightITextFSImage.getImage(LightITextFSImage.java:201) ... 19 more
When the image size is reduced, but not enough (for example half width:15000 as in file BLANK_15000.png
, the error might change and trigger and OutOfMemory by PixelGrabber.setDimensions() method:
2023-12-21 09:35:56,490 INFO [sandbox-logger] [impl.util.sandbox.ConversionSandbox] lambda$buildConfig$0 worker1: Exception in thread \"main\" java.lang.OutOfMemoryError: Java heap space
at java.desktop/java.awt.image.PixelGrabber.setDimensions(PixelGrabber.java:377)
at java.desktop/sun.awt.image.OffScreenImageSource.produce(OffScreenImageSource.java:185)
at java.desktop/sun.awt.image.OffScreenImageSource.addConsumer(OffScreenImageSource.java:66)
at java.desktop/sun.awt.image.OffScreenImageSource.startProduction(OffScreenImageSource.java:80)
at java.desktop/java.awt.image.PixelGrabber.grabPixels(PixelGrabber.java:259)
at java.desktop/java.awt.image.PixelGrabber.grabPixels(PixelGrabber.java:226)
at com.lowagie.text.Image.getInstance(Image.java:586)
at com.lowagie.text.Image.getInstance(Image.java:751)
at com.atlassian.confluence.extra.flyingpdf.impl.LightITextFSImage.getImage(LightITextFSImage.java:196)
at org.xhtmlrenderer.pdf.ITextOutputDevice.drawImage(ITextOutputDevice.java:828)
at org.xhtmlrenderer.pdf.ITextImageElement.paint(ITextImageElement.java:72)
at org.xhtmlrenderer.pdf.ITextOutputDevice.paintReplacedElement(ITextOutputDevice.java:199)
at org.xhtmlrenderer.layout.Layer.paintReplacedElement(Layer.java:540)
at org.xhtmlrenderer.layout.Layer.paintReplacedElements(Layer.java:497)
at org.xhtmlrenderer.layout.Layer.paintAsLayer(Layer.java:471)
at org.xhtmlrenderer.render.BlockBox.paintInline(BlockBox.java:265)
at org.xhtmlrenderer.layout.Layer.paintInlineContent(Layer.java:274)
at org.xhtmlrenderer.layout.Layer.paint(Layer.java:332)
at org.xhtmlrenderer.pdf.ITextRenderer.paintPage(ITextRenderer.java:432)
at org.xhtmlrenderer.pdf.ITextRenderer.writePDF(ITextRenderer.java:380)
at org.xhtmlrenderer.pdf.ITextRenderer.createPDF(ITextRenderer.java:333)
at org.xhtmlrenderer.pdf.ITextRenderer.createPDF(ITextRenderer.java:265)
at com.atlassian.confluence.extra.flyingpdf.sandbox.SandboxPdfConversionTask.createPdfFile(SandboxPdfConversionTask.java:81)
at com.atlassian.confluence.extra.flyingpdf.sandbox.SandboxPdfConversionTask.apply(SandboxPdfConversionTask.java:49)
at com.atlassian.confluence.extra.flyingpdf.sandbox.SandboxPdfConversionTask.apply(SandboxPdfConversionTask.java:34)
at com.atlassian.confluence.impl.util.sandbox.SandboxServerWorker.processNextMessage(SandboxServerWorker.java:53)
at com.atlassian.confluence.impl.util.sandbox.SandboxServer.run(SandboxServer.java:36)
at com.atlassian.confluence.impl.util.sandbox.SandboxServer.main(SandboxServer.java:56)
Workaround
Workaround 1)
Reduce the image dimensions and upload it into the page as a new version of the same attachment.
Workaround 2)
Add 20GB extra memory for running External Sandbox process, as a system property in your setenv.sh:
-Dconversion.sandbox.memory.limit.megabytes=20480
- mentioned in
-
Page Loading...