1#Copyright ReportLab Europe Ltd. 2000-2017 2#see license.txt for license details 3__version__='3.3.0' 4import reportlab.pdfgen.canvas 5from reportlab.lib import colors 6from reportlab.lib.units import inch 7 8 9def run(): 10 c = reportlab.pdfgen.canvas.Canvas('colortest.pdf') 11 12 #do a test of CMYK interspersed with RGB 13 14 #first do RGB values 15 framePage(c, 'Color Demo - RGB Space and CMYK spaces interspersed' ) 16 17 y = 700 18 19 c.setFillColorRGB(0,0,0) 20 c.drawString(100, y, 'cyan') 21 c.setFillColorCMYK(1,0,0,0) 22 c.rect(200, y, 300, 30, fill=1) 23 y = y - 40 24 25 c.setFillColorRGB(0,0,0) 26 c.drawString(100, y, 'red') 27 c.setFillColorRGB(1,0,0) 28 c.rect(200, y, 300, 30, fill=1) 29 y = y - 40 30 31 c.setFillColorRGB(0,0,0) 32 c.drawString(100, y, 'magenta') 33 c.setFillColorCMYK(0,1,0,0) 34 c.rect(200, y, 300, 30, fill=1) 35 y = y - 40 36 37 c.setFillColorRGB(0,0,0) 38 c.drawString(100, y, 'green') 39 c.setFillColorRGB(0,1,0) 40 c.rect(200, y, 300, 30, fill=1) 41 y = y - 40 42 43 c.setFillColorRGB(0,0,0) 44 c.drawString(100, y, 'yellow') 45 c.setFillColorCMYK(0,0,1,0) 46 c.rect(200, y, 300, 30, fill=1) 47 y = y - 40 48 49 c.setFillColorRGB(0,0,0) 50 c.drawString(100, y, 'blue') 51 c.setFillColorRGB(0,0,1) 52 c.rect(200, y, 300, 30, fill=1) 53 y = y - 40 54 55 c.setFillColorRGB(0,0,0) 56 c.drawString(100, y, 'black') 57 c.setFillColorCMYK(0,0,0,1) 58 c.rect(200, y, 300, 30, fill=1) 59 y = y - 40 60 61 62 c.showPage() 63 64 #do all named colors 65 framePage(c, 'Color Demo - RGB Space - page %d' % c.getPageNumber()) 66 67 all_colors = list(reportlab.lib.colors.getAllNamedColors().items()) 68 all_colors.sort() # alpha order by name 69 c.setFont('Times-Roman', 12) 70 c.drawString(72,730, 'This shows all the named colors in the HTML standard.') 71 y = 700 72 for (name, color) in all_colors: 73 c.setFillColor(colors.black) 74 c.drawString(100, y, name) 75 c.setFillColor(color) 76 c.rect(200, y-10, 300, 30, fill=1) 77 y = y - 40 78 if y < 100: 79 c.showPage() 80 framePage(c, 'Color Demo - RGB Space - page %d' % c.getPageNumber()) 81 y = 700 82 83 84 85 86 c.save() 87 88def framePage(canvas, title): 89 canvas.setFont('Times-BoldItalic',20) 90 canvas.drawString(inch, 10.5 * inch, title) 91 92 canvas.setFont('Times-Roman',10) 93 canvas.drawCentredString(4.135 * inch, 0.75 * inch, 94 'Page %d' % canvas.getPageNumber()) 95 96 #draw a border 97 canvas.setStrokeColorRGB(1,0,0) 98 canvas.setLineWidth(5) 99 canvas.line(0.8 * inch, inch, 0.8 * inch, 10.75 * inch) 100 #reset carefully afterwards 101 canvas.setLineWidth(1) 102 canvas.setStrokeColorRGB(0,0,0) 103 104if __name__ == '__main__': 105 run() 106