[reportlab-users] Transparent PNG support
Paul McNett
p at ulmcnett.com
Tue Dec 11 12:28:24 EST 2007
Tim Roberts wrote:
> Darryl Woods wrote:
>> Hi all,
>>
>> I am creating a report with ReportLab, and as part of this I have
>> extended the Table class to do some custom drawing for table borders
>> and such. Part of the design, however, is that the right side of the
>> tables "fade out" to white, using a gradient. (The report was designed
>> by a graphic designer...)
>>
>> I've tried various things:
>>
>> - placing a dithered black/white GIF image and setting the
>> transparency mask (looks very bad)
>> - placing a PNG with transparency (transparency doesn't appear)
>> - drawing a series of vertical lines, getting increasingly lighter (no
>> transparency though)
>>
>> Is there any way I can accomplish this?
>
> How good does it need to be? In my view, your last option is the best one:
>
> from reportlab.pdfgen import canvas
> from reportlab.lib.pagesizes import LETTER
> inch = 72
>
> canv = canvas.Canvas( 'try.pdf', pagesize=LETTER )
> canv.setPageCompression( 0 )
>
> # Rectangle from 72,72 to 360,360 in 20 steps.
>
> for i in range(20):
> d = i
> canv.setStrokeGray( i/20.0 )
> canv.rect( 72+d, 36+d, 360-d-d, 360-d-d )
> canv.setStrokeGray( 1.0-i/20.0 )
> canv.rect( 72+d, 396+d, 360-d-d, 360-d-d )
>
> canv.showPage()
> canv.save()
>
> This is drawing in units of 1 pixel. You could reduce the stroke width
> to 0.5 and do twice as many steps.
Points, not pixels, right?
Paul
--
http://paulmcnett.com
More information about the reportlab-users
mailing list