#from reportlab.platypus import TableStyle from reportlab.platypus.tables import TableStyle from reportlab.lib import styles from reportlab.lib.enums import TA_LEFT, TA_CENTER, TA_RIGHT, TA_JUSTIFY from reportlab.lib import colors def Styles(): stylesheet = {} ParagraphStyle = styles.ParagraphStyle para = ParagraphStyle('Normal', None) #the ancestor of all para.fontName = 'Times-Roman' para.fontSize = 30 para.leading = para.fontSize * 1.2 stylesheet['Normal'] = para stylesheet['normal'] = para #This one is spaced out a bit... para = ParagraphStyle('BodyText', stylesheet['Normal']) para.spaceBefore = 12 stylesheet['BodyText'] = para para = ParagraphStyle('Centered', stylesheet['Normal']) para.alignment = TA_CENTER stylesheet['Centered'] = para para = ParagraphStyle('BigCentered', stylesheet['Normal']) para.spaceBefore = 12 para.alignment = TA_CENTER stylesheet['BigCentered'] = para para = ParagraphStyle('Italic', stylesheet['BodyText']) para.fontName = 'Times-Italic' stylesheet['Italic'] = para para = ParagraphStyle('Footer', stylesheet['Normal']) para.fontSize = 18 para.leading = 0 para.alignment = TA_RIGHT stylesheet['Footer'] = para para = ParagraphStyle('Title', stylesheet['Normal']) para.fontName = 'Times-Roman' para.fontSize = para.fontSize * 3.0 para.leading = para.fontSize * 1.0 para.spaceAfter = para.fontSize * 0.2 para.alignment = TA_CENTER stylesheet['Title'] = para stylesheet['title'] = para para = ParagraphStyle('SmallTitle', stylesheet['Normal']) para.fontName = 'Times-Roman' para.fontSize = stylesheet['Title'].fontSize * 0.5 para.leading = para.fontSize * 1.0 para.alignment = TA_CENTER stylesheet['SmallTitle'] = para stylesheet['smalltitle'] = para para = ParagraphStyle('Heading1', stylesheet['Normal']) para.fontName = 'Times-Bold' para.fontSize = para.fontSize * 2.25 para.leading = para.fontSize * 1.1 para.spaceAfter = para.fontSize * 0.15 para.alignment = TA_CENTER stylesheet['Heading1'] = para stylesheet['head'] = para para = ParagraphStyle('Heading2', stylesheet['Normal']) para.fontName = 'Times-Bold' para.fontSize = para.fontSize * 1.6 para.leading = para.fontSize * 1.2 para.spaceBefore = para.fontSize * 0.8 stylesheet['Heading2'] = para para = ParagraphStyle('Heading3', stylesheet['Normal']) para.fontName = 'Times-BoldItalic' para.spaceBefore = 24 stylesheet['Heading3'] = para para = ParagraphStyle('Heading4', stylesheet['Normal']) para.fontName = 'Times-BoldItalic' para.spaceBefore = 6 stylesheet['Heading4'] = para para = ParagraphStyle('Bullet', stylesheet['Normal']) para.firstLineIndent = 10 para.leftIndent = 16 para.fontSize = para.fontSize * 1.5 para.leading = para.fontSize * 1.1 para.spaceBefore = para.fontSize * 0.4 para.bulletFontName = 'Symbol' para.bulletFontSize = para.fontSize * 0.7 para.bulletIndent = 20 stylesheet['Bullet'] = para stylesheet['bullet'] = para # doesn't work #Indented, for lists para = ParagraphStyle('Indent', stylesheet['Normal']) para.fontSize = stylesheet['Bullet'].fontSize * 0.75 para.leftIndent = para.fontSize * 2.5 para.leading = para.fontSize * 1.1 para.spaceBefore = para.fontSize * 0.2 stylesheet['Indent'] = para stylesheet['indent'] = para para = ParagraphStyle('Definition', stylesheet['Normal']) #use this for definition lists para.firstLineIndent = 72 para.leftIndent = 72 para.bulletIndent = 0 para.spaceBefore = 12 para.bulletFontName = 'Helvetica-BoldOblique' para.bulletFontSize = 24 stylesheet['Definition'] = para para = ParagraphStyle('Code', stylesheet['Normal']) para.fontName = 'Courier' #para.fontSize = para.fontSize * 0.75 para.fontSize = para.fontSize * 0.8 para.leading = para.fontSize + 1 para.leftIndent = 36 stylesheet['Code'] = para stylesheet['code'] = para para = ParagraphStyle('CodeHeader', stylesheet['Normal']) para.fontSize = stylesheet['Code'].fontSize * 1.5 para.spaceAfter = para.fontSize * 0.2 para.leftIndent = 36 para.firstLineIndent = para.leftIndent stylesheet['CodeHeader'] = para para = ParagraphStyle('NumList', stylesheet['Normal']) para.fontSize = 24 para.leading = para.fontSize * 1.1 stylesheet['NumList'] = para para = ParagraphStyle('URL', stylesheet['Normal']) para.fontName = 'Courier' para.fontSize = 24 para.leading = para.fontSize + 2 para.leftIndent = 10 stylesheet['url'] = para para = ParagraphStyle('Small', stylesheet['Normal']) para.fontSize = 12 para.leading = 14 stylesheet['Small'] = para #now for a table ts = TableStyle([ ('FONT', (0,0), (-1,-1), 'Times-Roman', 24), ('LINEABOVE', (0,0), (-1,0), 2, colors.green), ('LINEABOVE', (0,1), (-1,-1), 0.25, colors.black), ('LINEBELOW', (0,-1), (-1,-1), 2, colors.green), ('LINEBEFORE', (-1,0), (-1,-1), 2, colors.black), ('ALIGN', (1,1), (-1,-1), 'RIGHT'), #all numeric cells right aligned ('TEXTCOLOR', (0,1), (0,-1), colors.red), ('BACKGROUND', (0,0), (-1,0), colors.Color(0,0.7,0.7)) ]) stylesheet['table1'] = ts para = stylesheet['Code'] ts = TableStyle([ ('FONT', (0,0), (-1,0), 'Times-Roman', para.fontSize*1.5 ), ('FONT', (0,1), (-1,-1), 'Courier', para.fontSize), ]) stylesheet['2code'] = ts return stylesheet