[reportlab-users] Problem creating a custom Drawing Flowable to use with RML
Ray Côté
ray+rl at appropriatesolutions.com
Tue Jun 20 12:01:35 EDT 2023
Found the solution.
def draw(self) -> None:
"""Draw the chart."""
renderPDF.draw(self.drawing, self.canv, 0, 0)
I'll write the full implementation up as a Gist.
On Tue, Jun 20, 2023 at 9:22 AM Ray Côté <ray+rl at appropriatesolutions.com>
wrote:
> I'm trying to create an SVG Flowable to use as a plugInFlowable with RML.
> I've looked at several online examples and they all show how to add the
> Diagram when generating the report directly with Python code.
>
> My RML template contains the following:
> <plugInFlowable module="path.to.charts"
> function="chart">xyx</plugInFlowable>
>
> When I try to draw the Flowable using the following class I get an error
> that the Drawing does not contain a canv. There's a self.canv object that
> has various draw commands (drawImage, drawString, etc.) but none of them
> draw a Drawing object.
>
> I appreciate any guidance as to what the draw function should be doing.
> --Ray
>
> class SvgFlowable(Flowable):
> """Convert stream containing SVG instructions to a Reportlab
> flowable."""
>
> def __init__(self, svg: BytesIO) -> None:
> """Convert SVG to RML drawing on initialization."""
> svg.seek(0)
> self.drawing: Drawing = svg2rlg(svg) # Convert SVG to Drawing
> self.width: int = self.drawing.minWidth()
> self.height: int = self.drawing.height
> self.drawing._showBoundary = True
>
> def wrap(self, *args):
> return (self.width, self.height)
>
> def draw(self) -> "Drawing":
> """Draw the chart."""
> self.drawing.draw(). # Error
>
> ###
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist2.pair.net/pipermail/reportlab-users/attachments/20230620/bba9dff8/attachment.htm>
More information about the reportlab-users
mailing list