How to change text/font color in reportlab.pdfgen How to change text/font color in reportlab.pdfgen python python

How to change text/font color in reportlab.pdfgen


If you copy and paste the code in User Guide Section 2. You'll get a fancy coloured rectangle with a coloured Text within it. Probably the approach is not that clear in the user guide, I'd spent some time playing with it and I finally know how it works.

You need to imagine yourself drawing a canvas. You need to do all the setup before you draw. Below is an example I prepared to show better how to style a text, draw a line, and draw a rectangle, all with the ability to put colour on them.

from reportlab.pdfgen import canvasdef hello(c):    from reportlab.lib.units import inch    #First Example    c.setFillColorRGB(1,0,0) #choose your font colour    c.setFont("Helvetica", 30) #choose your font type and font size    c.drawString(100,100,"Hello World") # write your text    #Second Example    c.setStrokeColorRGB(0,1,0.3) #choose your line color    c.line(2,2,2*inch,2*inch)    #Third Example    c.setFillColorRGB(1,1,0) #choose fill colour    c.rect(4*inch,4*inch,2*inch,3*inch, fill=1) #draw rectanglec = canvas.Canvas("hello.pdf")hello(c)c.showPage()c.save()


from reportlab.lib.colors import HexColor...# sets fill color like orangec.setFillColor(HexColor(0xff8100))# or c.setFillColor(HexColor('#ff8100'))...


I can't verify this at the moment, but if you look in the linked example whenever they set the color before calling drawCenteredString they always do it with setFillColor, never setFillColorRGB, only using the latter to set the color of rects. So try instead changing it to

self.canvas.setFillColor(red)self.canvas.drawCenteredString(...)

I don't know if it says this in that doc or not, but the variable red is defined as a constant in one of the ReportLab modules, so if you have any errors with that, just be sure to include the appropriate module (the exact name escapes me at the moment).