[reportlab-users] How to use graphics Drawing objects with pdfgen
Canvas
Robin Becker
robin at reportlab.com
Mon Nov 28 12:44:20 EST 2005
tim graber wrote:
> In the graphics guide, I found this paragraph on using
> a drawing object directly with Platypus or
> pdfgen/canvas. I have been trying to figure out how
> to incorporate the graphics Drawing object directly
> onto a pdfgen Canvas object. Does anyone have any
> experience with this? Thanks.
>
> "The PDF renderer has special "privileges" - a Drawing
> object is also a Flowable and, hence, can be placed
> directly in the story of any Platypus document, or
> drawn directly on a Canvas with one line of code. In
> addition, the PDF renderer has a utility function to
> make a one-page PDF document quickly."
>
> from reportlab.pdfgen import canvas
> from reportlab.graphics.shapes import *
> from reportlab.lib import colors
> from reportlab.lib.units import inch
>
> c = canvas.Canvas("hello.pdf")
> c.translate(1*inch,1*inch)
> d = Drawing(400, 200)
> #d.add(Rect(50, 50, 300, 100,
> fillColor=colors.yellow)) d.add(String(150,100, 'Hello
> World', fontSize=18)) c.drawImage(d, inch, inch, 130,
> 48)
The above is wrong as Drawings are not images. In practice you need to render a
drawing to a canvas. So inpractice you need two lines to render a drawing to a
canvas eg
from reportlab.graphics import renderPDF
renderPDF.draw(drawing, canvas, x, y, [showBoundary=True/False])
set showBoundary=True to get a (red?) box round the drawing.
--
Robin Becker
More information about the reportlab-users
mailing list