--- author: '' category: '' date: 2008/09/10 23:32 description: '' link: '' priority: '' slug: BB753 tags: programming, python, rst2pdf title: Using vector images in reportlab type: text updated: 2008/09/10 23:32 url_type: '' --- One of the big limitations of reportlab is that it has no support for vector-based images. You can't insert SVG, EPS or any other vector-based format in your documents. Until now. By hijacking another app called uniconvertor_, I have managed to insert *as vectors* SVG images in a reportlab document. Here's the hackish code: .. code-block:: python import sys,os from app.io import load from app.plugins import plugins import app from reportlab.platypus import * from reportlab.lib.styles import getSampleStyleSheet from reportlab.lib.units import inch app.init_lib() plugins.load_plugin_configuration() class SVGImage(Flowable): def __init__(self,imgname): self.doc = load.load_drawing(imgname) for k in dir(self.doc): print k self.saver = plugins.find_export_plugin(plugins.guess_export_plugin(".pdf")) Flowable.__init__(self) def wrap(self,aW,aH): br=self.doc.BoundingRect() return br[2],br[3] def drawOn(self,canv,x,y,_sW=0): canv.translate(x,y) self.saver (self.doc,".ignoreme.pdf",options={'pdfgen_canvas':canv}) os.unlink(".ignoreme.pdf") styles = getSampleStyleSheet() def go(): doc = SimpleDocTemplate("phello.pdf") Story = [Spacer(1,2*inch)] style = styles["Normal"] p = SVGImage('warning.svg') Story.append(p) doc.build(Story) go() It has several problems (see where the second paragraph ended), but it *does* work. To run it, you need a warning.svg file (edit as needed) and you run it this way (replacing the path as proper for your setup):: PYTHONPATH=/usr/lib/python2.5/site-packages/uniconvertor/ python use_uniconv.py In fact, this is not limited to SVG files. You should be able to use the following formats: * CorelDRAW ver.7-X3,X4 (CDR/CDT/CCX/CDRX/CMX) * Adobe Illustrator up to 9 ver. (AI postscript based) * Postscript (PS) * Encapsulated Postscript (EPS) * Computer Graphics Metafile (CGM) * Windows Metafile (WMF) * XFIG * Scalable Vector Graphics (SVG) * Skencil/Sketch/sK1 (SK and SK1) * Acorn Draw (AFF) .. _uniconvertor: http://sk1project.org/modules.php?name=Products&product=uniconvertor