[reportlab-users] Amusement : SVG to ReportLab converter

Jerome Alet reportlab-users@reportlab.com
Wed, 25 Sep 2002 22:20:58 +0200


--Q68bSM7Ycu6FN28Q
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

Hi,

The attached tarball contains a small toy I've written to convert 
SVG files to Python code using ReportLab. 

The output of the generated python code when run through the Python 
interpreter is the PDF equivalent of the original SVG file. 

This is more a proof of concept thing than a complete program,
since only a *very* small subset of SVG tags is currently
recognized. Use it as you see fit.

The tarball contains svg2rl.py and lion.xml

lion.xml is a sample svg file.
svg2rl.py is the SVG to Python code generator.

Extract it, then type :

        $ python svg2rl.py lion.xml >lion.py
        $ python lion.py
        $ acroread out.pdf
        
License : GNU LGPL

lion.xml was modified a bit compared to the original, to simplify 
parsing.

Comments and improvements are more than welcome.

bye,

Jerome Alet

--Q68bSM7Ycu6FN28Q
Content-Type: application/x-gtar
Content-Disposition: attachment; filename="svg2rl.tgz"
Content-Transfer-Encoding: base64

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
Hp6H5+F5eB6eh+f/xfOftHUhoQB4AAA=

--Q68bSM7Ycu6FN28Q--