danfickle / danfickle/openhtmltopdf

SVG images not supported as background via CSS

Open
#750 10 comments 3 reactions 0 assignees View on GitHub
enhancement
Dominant language
Java
Stars
2.2k
Forks
423
PR merge metrics
No merged PRs in 30d

Description

In our project, we are using `PdfRendererBuilder.withW3cDocument` to convert a HTML document to PDF. In this input, we use CSS to define a background image:
```
.logo {
background-image: url("logo.svg");
}
```

When the PDF is rendered, we get the following stacktrace:

```
Can't read image file; unexpected problem for URI '.../logo.svg'

java.io.IOException: Unrecognized Image format
at com.openhtmltopdf.pdfboxout.PdfBoxImage.(PdfBoxImage.java:44)
at com.openhtmltopdf.pdfboxout.PdfBoxUserAgent.getImageResource(PdfBoxUserAgent.java:90)
at com.openhtmltopdf.render.AbstractOutputDevice.getBackgroundImage(AbstractOutputDevice.java:210)
at com.openhtmltopdf.render.AbstractOutputDevice.paintBackground0(AbstractOutputDevice.java:295)
at com.openhtmltopdf.render.AbstractOutputDevice.paintBackground(AbstractOutputDevice.java:234)
at com.openhtmltopdf.pdfboxout.PdfBoxFastOutputDevice.paintBackground(PdfBoxFastOutputDevice.java:283)
at com.openhtmltopdf.render.Box.paintBackground(Box.java:583)
at com.openhtmltopdf.render.displaylist.DisplayListPainter.paintBackgroundAndBorders(DisplayListPainter.java:75)
at com.openhtmltopdf.render.displaylist.DisplayListPainter.paint(DisplayListPainter.java:251)
at com.openhtmltopdf.pdfboxout.PdfBoxRenderer.paintPageFast(PdfBoxRenderer.java:921)
at com.openhtmltopdf.pdfboxout.PdfBoxRenderer.writePDFFast(PdfBoxRenderer.java:617)
at com.openhtmltopdf.pdfboxout.PdfBoxRenderer.createPdfFast(PdfBoxRenderer.java:554)
at com.openhtmltopdf.pdfboxout.PdfBoxRenderer.createPDF(PdfBoxRenderer.java:480)
at com.openhtmltopdf.pdfboxout.PdfBoxRenderer.createPDF(PdfBoxRenderer.java:417)
at com.openhtmltopdf.pdfboxout.PdfBoxRenderer.createPDF(PdfBoxRenderer.java:399)
at com.openhtmltopdf.pdfboxout.PdfRendererBuilder.run(PdfRendererBuilder.java:46)
[...]
```

When we add the SVG directly to the HTML (with ``), the image is rendered correctly. To make this work, we add the `com.openhtmltopdf.svgsupport.BatikSVGDrawer` in`PdfRendererBuilder.useSVGDrawer`.

The cause seems to be, that the SVG drawer is not used when rendering the background.

Thanks!

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.