[reportlab-users] Revival of svglib

Robin Becker robin at reportlab.com
Wed Jan 11 07:02:18 EST 2017

Hi Dinu,

I have been pondering one of the issues raised by Claude and it may be 
appropriate to talk about it here.

It seems the reportlab Path code is a bit broken in that it doesn't handle 
filled paths which are not totally closed in renderPDF.drawPath.

The canvas level operations eg drawPath/clipPath seem to do the right thing, but 
they have a slightly different model to SVG. In SVG a path which has fill set 
will be filled with an implicit closepath operator added. If stroke is set then 
the path is stroked, but without the implicit closepath. In the PDF model 
filling is done with an implicit closepath, but if stroking is also done then 
the closepath also applies to it.

So my problem is whether or not to change the existing behaviour of the 
renderPDF drawPath method and/or whether to adopt or allow for the svg path model.

In addition to the above we ought really to fix up the other renderers to do the 
right thing whatever that is decided. It is possible to change the behaviour by 
underhand techniques eg adding an optional _vg_model parameter to paths which 
defaults to 'use-existing' or equivalent. The svglib library could then add 
_vg_model='svg' to the paths and we would alter behaviour to emulate that.

Any thoughts?

On 04/01/2017 13:39, Dinu Gherman wrote:
> Hi and Happy New Year!
> A long time ago I wrote a package named svglib that would let me use SVG files in reportlab-generated PDFs. This projects has become dormant for many years, but some people kept nagging me a about updates. This recently resulted in Claude Paroz fixing a lot of remaining issues and helping with the migration to Python 3, which is really great news. Thanks, Claude! During the process we have even found a buglet in reportlab, which Robin, promptly as usual, fixed in v. 3.3.26. [1] (although that fix, being one in an increased reportlab package micro version, is available only for registered reportlab users from the reportlab PyPI server [2]).
> So, if you have some SVG to use in your PDFs, please have a look at the code, run the extensive test suite (pulling in lots of samples from Wikipedia and W3C) and, even better, run it on your own SVGs and report any issues you find, before we are going to make a new revival release this January. There might still be some little issues left, but this new release will be the msot feature-complete svglib ever, running on Python 2 and 3.
> Also, the svglib codebase is hosted on GitHub now, so feel invited to star and/or watch the repository! [3]
> Best,
> Dinu
> [1] https://bitbucket.org/rptlab/reportlab/issues/98/
> [2] https://www.reportlab.com/pypi/
> [3] https://github.com/deeplook/svglib
> _______________________________________________
> reportlab-users mailing list
> reportlab-users at lists2.reportlab.com
> https://pairlist2.pair.net/mailman/listinfo/reportlab-users

Robin Becker

More information about the reportlab-users mailing list