Question: Which reproducible process can enable Windows Python users to render a SVG image into PNG?
Many questions/answers (such as Convert SVG to PNG in Python and Server-side SVG to PNG (or some other image format) in python, which are not duplicates for the reasons explained below) explain how to convert a SVG to PNG with Python.
Unfortunately, none of them are ready-to-use for Python + Windows. After more than 20 minutes, and many different attempts, I'm still unable to do it. More details about failing attempts:
Installing
cairo
on Windows is not straightforward, we have to use Gohlke's binaries Intalling pycairo with Python 3.7 on Windows :pip install pycairo-1.20.0-cp37-cp37m-win_amd64.whl
Even once
cairo
is installed,rsvg
(from main answers of Server-side SVG to PNG (or some other image format) in python, Convert SVG to PNG in Python) is not available for Windows:pip install rsvg # or pyrsvg > ERROR: No matching distribution found for pyrsvg
Solutions with
svglib
orreportlab
don't work out-of-the-box on Python3 + Windows:from svglib.svglib import svg2rlg from reportlab.graphics import renderPDF, renderPM drawing = svg2rlg("a.svg") renderPM.drawToFile(drawing, "file.png", fmt="PNG")
Indeed:
AttributeError: 'Image' object has no attribute 'fromstring'
So a solution - specific for Windows - would be helpful.
width=1000px
(Of course a SVG can be infinitely zoomed without loss of quality, which will not be the case for a PNG, but I'm ok with this). – Kuntzsvglib
example worked for me on Windows, I couldn't reproduce your error. Is the problem specific to certain SVG files you have? – Teacartpip
without specifying a version number for either. Also, could you please edit your question to include the full traceback of thatAttributeError
you were receiving? – Teacart