def afterDrawPage(self, canvas, doc): order = self.order canvas.saveState() left_text = "The Bob Miller Book Room\nAcct#: {}".format( order.distributor.account_number) center_text = "PO#: {}\n{}".format(order.po, order.date) right_text = "{}".format(order.distributor.full_name) tx = create_text_object(canvas, 2 * cm, PAGE_HEIGHT - 2 * cm, left_text, styleN, align='left') canvas.drawText(tx) tx = create_text_object(canvas, PAGE_WIDTH / 2.0, PAGE_HEIGHT - 2 * cm, center_text, styleN, align='center') canvas.drawText(tx) canvas.setFont(styleN.fontName, styleN.fontSize) canvas.drawRightString(PAGE_WIDTH - 2 * cm, PAGE_HEIGHT - 2 * cm, right_text) canvas.restoreState()
def draw_debug_outline(self, config): """draw an outline around the box""" canvas = self.canvas # don't muck up the external state canvas.saveState() # discreet - but visible canvas.setStrokeColorRGB(0.9, 0.7, 0.7) canvas.setFillColorRGB(0.6, 0.6, 0.6) canvas.setFont('Helvetica', 8) # draw a box to show the extent canvas.rect( config['x'], config['y'], config['w'], config['h'], stroke=1, fill=0, ) # put in some debug info canvas.drawRightString(config['x'] + config['w'], config['y'] + 4, ', '.join(config['content'])) # restore state canvas.restoreState()
def drawText(canvas, x, y, text, en = False, bold = False, size = 12): wrkText = text isArabic = False isBidi = False for c in wrkText: cat = unicodedata.bidirectional(c) if cat == "AL" or cat == "AN" or cat == "FA": isArabic = True isBidi = True break elif cat == "R" or cat == "RLE" or cat == "RLO": isBidi = True if isArabic: wrkText = a_forms.fuse(wrkText) wrkText = a_process.shape(wrkText) if isBidi: wrkText = get_display(wrkText) if bold: canvas.setFont('BNazanin', size) else: canvas.setFont('Nazanin', size) canvas.drawRightString(x, canvas._pagesize[1] - y, wrkText)
def draw_debug_outline(self, config ): """draw an outline around the box""" canvas = self.canvas # don't muck up the external state canvas.saveState() # discreet - but visible canvas.setStrokeColorRGB( 0.9, 0.7, 0.7 ) canvas.setFillColorRGB( 0.6, 0.6, 0.6 ) canvas.setFont( 'Helvetica', 8 ) # draw a box to show the extent canvas.rect( config['x'], config['y'], config['w'], config['h'], stroke=1, fill=0, ) # put in some debug info canvas.drawRightString( config['x'] + config['w'], config['y'] + 4, ', '.join(config['content']) ) # restore state canvas.restoreState()
def header(canvas, signup, entry, metadata): year = int(signup.get('year')) # Prints Show info canvas.setFont("Helvetica-Bold", 20) canvas.drawString(inch, 10 * inch, "That Takes the Cake! " + str(year)) canvas.setFont("Helvetica", 14) canvas.drawString(inch, 9.75 * inch, "Cake & Sugar Art Show & Competition") canvas.drawString(inch, 9.50 * inch, "Capital Confectioners, Austin, TX") canvas.drawString(inch, 9.25 * inch, get_show_start_date(year) + " & " + get_show_end_date(year)) # Print entry number, division & category canvas.setFont("Helvetica-Bold", 20) canvas.drawRightString(7.75 * inch, 10 * inch, "Entry #" + str(entry.get('id'))) canvas.setFont("Helvetica", 12) if (entry.get('category').startswith('Showcakes')): canvas.drawRightString(7.75 * inch, 9.75 * inch, entry.get('category')) elif _is_tasting(metadata, entry): canvas.drawRightString(7.75 * inch, 9.75 * inch, entry.get('category')) else: className = signup.get('class', '') canvas.drawRightString(7.75 * inch, 9.75 * inch, className) if (className): if ((className.find('Child') < 0) and (className.find('Junior') < 0)): canvas.drawRightString(7.75 * inch, 9.50 * inch, entry.get('category')) canvas.setFont("Helvetica", 14)
def addPageNumber(canvas, doc): """ Add the page number """ page_num = canvas.getPageNumber() text = "Page #%s" % page_num canvas.drawRightString(200*mm, 20*mm, text)
def header(self, canvas, doc): # Logos canvas.saveState() canvas.drawImage(LOGO_EPC, doc.leftMargin, doc.height - 1.5 * cm, 5 * cm, 3 * cm, preserveAspectRatio=True) canvas.drawImage(LOGO_ESNE, doc.width - 2.5 * cm, doc.height - 1.2 * cm, 5 * cm, 3 * cm, preserveAspectRatio=True) # Section and subject x = doc.leftMargin y = doc.height - 2.5 * cm canvas.setFont('Helvetica-Bold', 10) canvas.line(x, y, x + doc.width, y) y -= 0.4 * cm canvas.drawString(x, y, self.section) canvas.drawRightString(x + doc.width, y, self.subject) y -= 0.2 * cm canvas.line(x, y, x + doc.width, y) # Footer canvas.line(doc.leftMargin, 1 * cm, doc.width + doc.leftMargin, 1 * cm) footer = Paragraph(settings.PDF_FOOTER_TEXT, style_footer) w, h = footer.wrap(doc.width, doc.bottomMargin) footer.drawOn(canvas, doc.leftMargin, h) canvas.restoreState()
def myPage(canvas, doc): canvas.saveState() # save the current state canvas.setFont('InconsolataBold', 16) # set the font for the name canvas.drawString( .4 * inch, HEIGHT - (.4 * inch), contact['name']) # draw the name on top left page 1 canvas.setFont('Inconsolata', 8) # sets the font for contact canvas.drawRightString( WIDTH - (.4 * inch), HEIGHT - (.4 * inch), contact['website']) canvas.line(.4 * inch, HEIGHT - (.47 * inch), WIDTH - (.4 * inch), HEIGHT - (.47 * inch)) canvas.drawString( .4 * inch, HEIGHT - (.6 * inch), contact['phone']) canvas.drawCentredString( WIDTH / 2.0, HEIGHT - (.6 * inch), contact['address']) canvas.drawRightString( WIDTH - (.4 * inch), HEIGHT - (.6 * inch), contact['email']) # restore the state to what it was when saved canvas.restoreState()
def myFirstPage(self, canvas, doc): canvas.saveState() canvas.drawImage("Logo.png", 10, 24 * cm) canvas.setFont('Times-Bold', 20) canvas.drawCentredString(1 * self.PageWidth / 2, self.PageHeight - 30, self.Title) canvas.setFont('Helvetica', 9) canvas.drawString(inch, 0.75 * inch, "Page 1 / %s" % self.pageinfo) canvas.setFont("Helvetica", 12) x = 3 * cm y = self.PageHeight - 8 * cm canvas.drawString(x, y, "Professeur : " + self.rapport.prof) canvas.drawString(x, y - 2 * cm, "Lieu : " + self.rapport.lieu) canvas.drawString(x, y - 1 * cm, "Matière : " + self.rapport.matiere) canvas.drawString( x, y - 3 * cm, "Date : " + str(self.rapport.hoy.day) + "/" + str(self.rapport.hoy.month) + "/" + str(self.rapport.hoy.year) + " à " + str(self.rapport.hour) + "h" + str(self.rapport.minute)) canvas.drawRightString( 20 * cm, y, "Eleve : " + self.rapport.prenom + " " + self.rapport.nom) canvas.drawRightString(20 * cm, y - 1 * cm, "Classe : " + self.rapport.classe) canvas.drawString( x, y - 4 * cm, "Punition demandée par l'enseignant : " + self.rapport.punition) canvas.drawString( x, y - 5 * cm, "Sanction demandée par l'enseignant : " + self.rapport.sanction) canvas.drawString(x, y - 6 * cm, "Décision de la Direction, ou du CPE : ") canvas.drawString(x, y - 8 * cm, "Motifs : ") canvas.restoreState()
def el_encogedor_de_fuentes_de_doraemon(canvas, fuente, tamannoini, xini, xfin, y, texto, alineacion = -1): """ Comenzando por el tamaño inicial "tamannoini", encoge el texto hasta que quepa en los límites fijados y después lo escribe. Convierte el texto por si está en una codificación no soportada. Al finalizar, devuelve las propiedades de texto del canvas a su estado original y la fuente a su tamaño inicial. NO AVANZA LÍNEA. Si alineacion == -1: Alineación a la izquierda. Si 0, centrado y si 1, a la derecha. """ # PLAN: No estaría mal pasar un tamaño mínimo de fuente, y si se alcanza o se supera, cortar la línea con # agregarFila y el último tamaño de fuente válido. Claro que entonces habría que devolver también las líneas # avanzadas, etc... canvas.saveState() size = tamannoini texto = escribe(texto) while canvas.stringWidth(texto, fuente, size) > (xfin - xini) and size > 4: size -= 1 canvas.setFont(fuente, size) if alineacion == -1: canvas.drawString(xini, y, texto) elif alineacion == 1: canvas.drawRightString(xfin, y, texto) elif alineacion == 0: canvas.drawCentredString((xfin + xini) / 2.0, y, texto) else: print "geninformes.py::el_encogedor_de_fuentes_de_doraemon -> Error alineación. Uso alineación a la izquierda por defecto." canvas.drawString(xini, y, texto) canvas.restoreState()
def create_later_pages(canvas, doc): canvas.saveState() canvas.setFont('Helvetica', 10) canvas.drawString(BORDER_HORIZONTAL, BORDER_VERTICAL, TITLE) canvas.drawRightString(PAGE_WIDTH - BORDER_HORIZONTAL, BORDER_VERTICAL, "Seite {}".format(doc.page)) canvas.restoreState()
def _add_page_outline(self, canvas): start_posn = self.start_posn canvas.setLineWidth(2) canvas.rect(cm, cm, PAGE_WIDTH - 2 * cm, PAGE_HEIGHT - 2 * cm) canvas.drawImage(LOGO_PATH, 0.5 * inch, start_posn, height=0.5 * inch, width=1.875 * inch) canvas.setFont('Helvetica-Bold', 24) canvas.drawRightString(PAGE_WIDTH - (0.5 * inch), start_posn + 0.15 * inch, 'REGISTRATION FORM') footer_text = 'This form created on ' footer_text += datetime.now().strftime('%Y-%m-%d %I:%M:%S %p') canvas.setFont('Helvetica', 9) canvas.drawRightString(PAGE_WIDTH - (0.5 * inch), 0.5 * inch, footer_text) self.start_posn = start_posn - 0.4 * inch sales_rep_text = 'BOOKING REP: ' if self.user.first_name or self.user.last_name: sales_rep_text += self.user.first_name + ' ' + self.user.last_name else: sales_rep_text += self.user.username canvas.setFont('Helvetica-Bold', 9.5) canvas.drawString(0.5 * inch, 0.5 * inch, sales_rep_text)
def _draw_subsection(canvas, yc, title_left, title_middle, title_right, text_tuples): if title_left or title_middle or title_right: canvas.setFont(SUBSECTION_TITLE_FONT, SUBSECTION_FONT_SIZE) title_y = yc - SUBSECTION_FONT_SIZE if title_left: title_x = H_TEXT_MARGIN canvas.drawString(title_x, title_y, title_left) if title_middle: title_x = RESUME_PAGE_SIZE[0] / 2 canvas.drawCentredString(title_x, title_y, title_middle) if title_right: title_x = RESUME_PAGE_SIZE[0] - H_TEXT_MARGIN canvas.drawRightString(title_x, title_y, title_right) yc = title_y - V_SEPARATOR canvas.setFont(SUBSECTION_FONT, SUBSECTION_FONT_SIZE) for (draw_bullet, text) in text_tuples: if draw_bullet: text = u"• " + unicode(text) lines = _break_text(text, RESUME_PAGE_SIZE[0] - (2*H_TEXT_MARGIN + SUBSECTION_H_INDENT), SUBSECTION_FONT, SUBSECTION_FONT_SIZE) line_x = H_TEXT_MARGIN + SUBSECTION_H_INDENT for line in lines: line_y = yc - SUBSECTION_FONT_SIZE canvas.drawString(line_x, line_y, line) yc = line_y - V_SEPARATOR return yc - SUBSECTION_V_SPACER
def draw(self): canvas = self.canv if type(self.labelLigne) != six.text_type : self.labelLigne = self.labelLigne.decode("iso-8859-15") canvas.setFont("Helvetica", 9) # Dessin du label de la ligne xRightLabel = COORD_LIGNE[0] - 10 yBasLabel = 0 if MODE_TEXTE == 2 : yBasLabel = yBasLabel + 6 canvas.drawRightString(xRightLabel, yBasLabel + 3, self.labelLigne) # Dessin test de la ligne totale ## canvas.rect(COORD_LIGNE[0], 0, COORD_LIGNE[1]-COORD_LIGNE[0], 10) tailleVirtuelleLigne = COORD_LIGNE[1]-COORD_LIGNE[0] largeurMargesFeuille = 75 posXGaucheLigne = COORD_LIGNE[0] taillePapierLigne = LARGEUR_PAGE- (largeurMargesFeuille*2) - posXGaucheLigne facteurAgrandissement = (taillePapierLigne *1.0) / tailleVirtuelleLigne # Dessine la ligne ## canvas.setFillColorRGB(0.9, 0.9, 0.5) ## canvas.rect(COORD_LIGNE[0], 0, taillePapierLigne, HAUTEUR_BARRE, fill=0) # Dessin de toutes les barres de la ligne for barre in self.listeBarresLigne : IDpresence, IDpersonne, date, heureDebut, heureFin, IDcategorie, intitule, posG, posD, posYhaut, posYbas = barre x = posG y = 0 largeur = posD - posG hauteur = HAUTEUR_BARRE - 3 label = intitule self.Barre(canvas, x, y, largeur, hauteur, label, heureDebut, heureFin, IDcategorie, facteurAgrandissement)
def draw_page(canvas, doc): """Method to format my pdfs.""" title = "CPIMS" author = "CPIMS" canvas.setTitle(title) canvas.setSubject(title) canvas.setAuthor(author) canvas.setCreator(author) # footer = [] # Put some data into the footer # Frame(2 * cm, 0, 17 * cm, 4 * cm).addFromList(footer, canvas) canvas.saveState() # Header canvas.drawString(0.5 * inch, 8 * inch, doc.fund_name) canvas.drawRightString(10.5 * inch, 8 * inch, doc.report_info) # Footers canvas.setFont("Helvetica", 8) canvas.drawString(0.5 * inch, 0.5 * inch, '') canvas.drawRightString( 11.2 * inch, 0.38 * inch, 'Source : %s' % (doc.source)) canvas.setFont("Helvetica", 240) # self.setFont("Helvetica", 8) canvas.setStrokeGray(0.90) canvas.setFillGray(0.90) # canvas.rotate(45) canvas.restoreState()
def addPageNumber(canvas, doc): """ Add the page number """ page_num = canvas.getPageNumber() text = "%s" % page_num canvas.drawRightString(200*mm, 20*mm, text)
def draw(self): canvas = self.canv if type(self.labelLigne) != six.text_type: self.labelLigne = self.labelLigne.decode("iso-8859-15") canvas.setFont("Helvetica", 9) # Dessin du label de la ligne xRightLabel = COORD_LIGNE[0] - 10 yBasLabel = 0 if MODE_TEXTE == 2: yBasLabel = yBasLabel + 6 canvas.drawRightString(xRightLabel, yBasLabel + 3, self.labelLigne) # Dessin test de la ligne totale ## canvas.rect(COORD_LIGNE[0], 0, COORD_LIGNE[1]-COORD_LIGNE[0], 10) tailleVirtuelleLigne = COORD_LIGNE[1] - COORD_LIGNE[0] largeurMargesFeuille = 75 posXGaucheLigne = COORD_LIGNE[0] taillePapierLigne = LARGEUR_PAGE - (largeurMargesFeuille * 2) - posXGaucheLigne facteurAgrandissement = (taillePapierLigne * 1.0) / tailleVirtuelleLigne # Dessine la ligne ## canvas.setFillColorRGB(0.9, 0.9, 0.5) ## canvas.rect(COORD_LIGNE[0], 0, taillePapierLigne, HAUTEUR_BARRE, fill=0) # Dessin de toutes les barres de la ligne for barre in self.listeBarresLigne: IDpresence, IDpersonne, date, heureDebut, heureFin, IDcategorie, intitule, posG, posD, posYhaut, posYbas = barre x = posG y = 0 largeur = posD - posG hauteur = HAUTEUR_BARRE - 3 label = intitule self.Barre(canvas, x, y, largeur, hauteur, label, heureDebut, heureFin, IDcategorie, facteurAgrandissement)
def myLaterPages(canvas, doc): canvas.saveState() # canvas.setFont('Times-Roman',bodyfontsize) canvas.drawString(doc.leftMargin / 2, doc.bottomMargin / 2, "Page %d" % (doc.page)) canvas.drawRightString(PAGE_WIDTH - doc.leftMargin / 2, doc.bottomMargin / 2, pageinfo) canvas.restoreState()
def create_first_page(canvas, doc): canvas.saveState() canvas.setFont('Helvetica', 16) canvas.drawCentredString(PAGE_WIDTH/2.0, PAGE_HEIGHT-58, TITLE) canvas.setFont('Helvetica', 10) canvas.drawString(BORDER_HORIZONTAL, BORDER_VERTICAL, TITLE) canvas.drawRightString(PAGE_WIDTH-BORDER_HORIZONTAL , BORDER_VERTICAL, "Seite 1") canvas.restoreState()
def addPageNumber(canvas, doc): """ Add the page number """ page_num = canvas.getPageNumber() text = "Page %s" % page_num canvas.setFont("Helvetica", 9) canvas.drawRightString(225 * cm, 7 * cm, text)
def addPageNumber1(canvas, doc): """ Add the page number """ temp_pdf=PdfFileReader(open("output.pdf", "rb")) page_num = temp_pdf.getNumPages()+1 text = "%s" % page_num canvas.drawRightString(200*mm, 20*mm, text)
def func(canvas, doc): width, height = letter margin = 0.66 * 72 canvas.saveState() canvas.setFillColor("gray") canvas.drawString(margin, height - margin, "CONFIDENTIAL") canvas.drawRightString(width - margin, height - margin, str(timezone.now())) canvas.restoreState()
def fonts(canvas): text = "Now is the time for all good men to..." x = 1.8 * inch y = 2.7 * inch for font in canvas.getAvailableFonts(): canvas.setFont(font, 10) canvas.drawString(x, y, text) canvas.setFont("Helvetica", 10) canvas.drawRightString(x - 10, y, font + ":") y = y - 13
def pageFooter(self, canvas, doc): canvas.saveState() canvas.setFont( self.footerFontName, self.footerFontSize, self.footerFontLeading ) # draw the doc info canvas.drawString ( self.footerLeftEdge, self.footerHeight, self.pageInfo ) # draw the page number canvas.drawRightString ( self.footerRightEdge, self.footerHeight, "Page {0}".format (doc.page) ) canvas.restoreState()
def numeroPagina(self, canvas, doc): """ agrega el numero de pagina al documento :param canvas: :param doc:documento pdf :return: None """ num = canvas.getPageNumber() text = "Página %s" % num canvas.drawRightString(190 * mm, 20 * mm, text)
def first_page(self, canvas, doc): canvas.setFont("Times-Roman", 10) canvas.drawString(65,720,"Finance report for : %s %s" %(datetime.date.today().strftime("%B"), datetime.date.today().strftime("%Y"))) canvas.drawString(65,705,'Report generated on : %s' %str("{:%d.%m.%Y}".format(datetime.datetime.now()))) canvas.setLineWidth(.2) canvas.line(50,695,540,695) page_num = canvas.getPageNumber() text = "Page #%s" % page_num canvas.drawRightString(200*mm, 20*mm, text)
def create_first_page(canvas, doc): canvas.saveState() canvas.setFont('Helvetica', 16) canvas.drawCentredString(PAGE_WIDTH / 2.0, PAGE_HEIGHT - 98, TITLE) canvas.setFont('Helvetica', 11) canvas.drawCentredString(PAGE_WIDTH / 2.0, PAGE_HEIGHT - 130, AUTHOR) canvas.setFont('Helvetica', 10) canvas.drawString(BORDER_HORIZONTAL, BORDER_VERTICAL, TITLE) canvas.drawRightString(PAGE_WIDTH - BORDER_HORIZONTAL, BORDER_VERTICAL, "Seite 1") canvas.restoreState()
def func(canvas, doc): width, height = letter margin = 0.66 * 72 canvas.saveState() canvas.setFillColor('gray') #canvas.setFont('OpenSans',12) canvas.drawString(margin, height - margin, "CONFIDENTIAL") canvas.drawRightString(width - margin, height - margin, localtime(timezone.now()).strftime(date_format)) if recipient: canvas.drawString(margin, margin, "Intended for: Title IX Coordinator %s" % recipient) canvas.restoreState()
def p1_fonts(canvas): from reportlab.lib.units import inch text = "Now is the time for all good men to...こんにちは、世界!" x = 1.8 * inch y = 2.7 * inch for font in canvas.getAvailableFonts(): canvas.setFont(font, 10) canvas.drawString(x, y, text) canvas.setFont("Helvetica", 10) canvas.drawRightString(x - 10, y, font + ":") y = y - 13
def _draw_contact_lines(canvas, contact_lines): yc = RESUME_PAGE_SIZE[1] - V_TOP_MARGIN canvas.setFont(CONTACT_FONT, CONTACT_FONT_SIZE) contact_x = RESUME_PAGE_SIZE[0] - H_TEXT_MARGIN for contact in contact_lines: contact_y = yc - CONTACT_FONT_SIZE canvas.drawRightString(contact_x, contact_y, contact) yc = contact_y - V_SEPARATOR return yc
def fonts(canvas): from reportlab.lib.units import inch text = "Now is the time for all good men to..." x = 1.8*inch y = 2.7*inch for font in canvas.getAvailableFonts(): canvas.setFont(font, 10) canvas.drawString(x,y,text) canvas.setFont("Helvetica", 10) canvas.drawRightString(x-10,y, font+":") y = y-13
def estruturar_pdf(canvas, tipo, datahora, request): canvas, posicao_y = gerar_cabecalho(canvas) if tipo == 'CAUTELA': canvas, posicao_y = gerar_texto_cautela(canvas, posicao_y) canvas = gerar_tabela_cautela(canvas, posicao_y, request) canvas = gerar_rodape(canvas, datahora) canvas = gerar_assinatura(canvas, request) else: canvas.drawCentredString(width/2, posicao_y, 'Pronto da reserva de material do Pelotão Posto de Comando') canvas = gerar_tabela(canvas, posicao_y) canvas.drawRightString(width-10, 10, 'DATA: ' + datahora.strftime("%d-%m-%Y %H:%M:%S")) return canvas
def render(self, canvas, context): canvas.rect(self.left_margin, self.bottom_margin, self.box_width, self.box_height, stroke=0, fill=1) canvas.setFillColor(colors.black) canvas.drawString( self.left_margin + 2 * mm, self.bottom_margin + 2 * mm, 'ID: {}'.format(context['student']['id'])) canvas.drawRightString( self.left_margin + self.box_width - 2 * mm, self.bottom_margin + 2 * mm, '(Seite {})'.format(context['page_num']))
def draw(self): canvas = self.canv couleurDate = None positionSeparation = 20 # Couleur de la case Date de la journée if AFFICHER_VACANCES == True and self.dateDD in LISTE_VACANCES : couleurDate = COULEUR_VACANCES if AFFICHER_WE == True and (self.dateDD.weekday() == 5 or self.dateDD.weekday() == 6) : couleurDate = COULEUR_WE if AFFICHER_FERIES == True and self.dateDD in LISTE_FERIES : couleurDate = COULEUR_FERIES if couleurDate != None : r, g, b = ConvertCouleur(couleurDate) canvas.setFillColorRGB(r, g, b) canvas.rect(0, 0, positionSeparation, self.hauteurCase, fill=1, stroke=False) # Texte date canvas.setFillColorRGB(0, 0, 0) canvas.setFont("Helvetica", 7) canvas.drawRightString(positionSeparation-2, 2, self.labelDate) # Trait séparation Date et Heures canvas.setLineWidth(0.25) canvas.line(positionSeparation, 0, positionSeparation, self.hauteurCase) # Si aucune présence ce jour -là if len(self.dictBarres) == 0 : return # Récup du nbre total d'heure de la journée totalJour = self.dictBarres["totalJour"] # Transformation du nombre d'heures par catégorie en pourcentage listeCategories = [] for IDcategorie, nbreHeures in self.dictBarres.items(): if IDcategorie != "totalJour" : largeurBarre = nbreHeures * 1.0 * (self.largeurCase-positionSeparation-0.25) / totalJour listeCategories.append( (largeurBarre, IDcategorie) ) listeCategories.sort() # Création des graphes if AFFICHER_COULEUR_CATEGORIES == True : positionTemp = positionSeparation+0.25 for largeurBarre, IDcategorie in listeCategories : r, g, b = ConvertCouleur(FormateCouleur(DICT_CATEGORIES[IDcategorie][2])) canvas.setFillColorRGB(r, g, b) canvas.rect(positionTemp, 0, largeurBarre, self.hauteurCase, fill=1, stroke=False) positionTemp += largeurBarre # Label Total Heure de la journée if AFFICHER_HEURES == True : canvas.setFillColorRGB(0, 0, 0) canvas.setFont("Helvetica", 7) canvas.drawRightString(self.largeurCase-2, 2, "%s" % minutesEnHeures(totalJour))
def framePage(canvas, doc): # canvas.drawImage("snkanim.gif", 36, 36) canvas.saveState() canvas.setStrokeColorRGB(1, 0, 0) canvas.setLineWidth(5) canvas.line(66, 72, 66, PAGE_HEIGHT - 72) canvas.setFont("Times-Italic", 12) canvas.drawRightString(523, PAGE_HEIGHT - 56, "Platypus User Guide and Test Script") canvas.setFont("Times-Roman", 12) canvas.drawString(4 * inch, 0.75 * inch, "Page %d" % canvas.getPageNumber()) canvas.restoreState()
def addPageNumber(canvas, doc): """ Add the page numbers to the document """ width, height = A4 # this is useful when defining where to plot something on the page page_num = canvas.getPageNumber() text = "%s" % page_num header = "TIC {}".format(tic) canvas.setFont('Helvetica', 8) canvas.drawString(width * 0.85, height * 0.95, header) canvas.drawRightString(200 * mm, 10 * mm, text)
def func(canvas, doc): width, height = letter margin = 0.66 * 72 canvas.saveState() canvas.setFillColor('gray') canvas.drawString(margin, height - margin, "CONFIDENTIAL") canvas.drawRightString( width - margin, height - margin, str(timezone.now())) canvas.drawString( margin, margin, f"Intended for: Title IX Coordinator {recipient}", ) canvas.restoreState()
def addPageNumber(self, canvas, doc): self.pageNum = canvas.getPageNumber() text = "Page %s" % str(self.pageNum + 2) topTitle = self.topTitle.split(", ") topTitle = topTitle[len(topTitle) - 1] PresidenNameOccurs = False canvas.setLineWidth(3) text2 = "" topTitle2 = "" for item in self.articleNum: if item["pNum"] == self.pageNum: if item["name"] == "For the European Parliament": topTitle = "" PresidenNameOccurs = True else: topTitle2 += ", " + item["name"] if topTitle2 else item[ "name"] canvas.setFont("Helvetica-Bold", 9) if self.pageNum % 2 == 0: canvas.drawString(0.5 * inch, 8.6 * inch, topTitle2 or topTitle) else: canvas.drawRightString(5.5 * inch, 8.6 * inch, topTitle2 or topTitle) canvas.setFont("Helvetica-Bold", 10) canvas.drawRightString(1 * inch, 8.4 * inch, "English") canvas.drawRightString(5.5 * inch, 8.4 * inch, self.lang) canvas.line(0.5 * inch, 8.3 * inch, 5.5 * inch, 8.3 * inch) canvas.setFont("Helvetica", 10) canvas.drawRightString(5.5 * inch, 0.3 * inch, text) canvas.line(0.5 * inch, 0.5 * inch, 5.5 * inch, 0.5 * inch) self.topTitle = "" if PresidenNameOccurs == True else (topTitle2 or topTitle)
def func(canvas, doc): width, height = letter margin = 0.66 * 72 canvas.saveState() canvas.setFillColor('gray') canvas.drawString(margin, height - margin, "CONFIDENTIAL") canvas.drawRightString(width - margin, height - margin, str(timezone.now())) canvas.drawString( margin, margin, f"Intended for: Title IX Coordinator {recipient}", ) canvas.restoreState()
def framePage(canvas,doc): #canvas.drawImage("snkanim.gif", 36, 36) canvas.saveState() canvas.setStrokeColorRGB(1,0,0) canvas.setLineWidth(5) canvas.line(66,72,66,PAGE_HEIGHT-72) canvas.setFont('Times-Italic',12) canvas.drawRightString(523, PAGE_HEIGHT - 56, "Platypus User Guide and Test Script") canvas.setFont('Times-Roman',12) canvas.drawString(4 * inch, 0.75 * inch, "Page %d" % canvas.getPageNumber()) canvas.restoreState()
def func(canvas, doc): width, height = letter margin = 0.66 * 72 canvas.saveState() canvas.setFillColor('gray') #canvas.setFont('OpenSans',12) canvas.drawString(margin, height - margin, "CONFIDENTIAL") canvas.drawRightString( width - margin, height - margin, localtime(timezone.now()).strftime(date_format)) if recipient: canvas.drawString( margin, margin, "Intended for: Title IX Coordinator %s" % recipient) canvas.restoreState()
def afterDrawPage(self, canvas, doc): order = self.order canvas.saveState() left_text = "The Bob Miller Book Room\nAcct#: {}".format(order.distributor.account_number) center_text = "PO#: {}\n{}".format(order.po, order.date) right_text = "{}".format(order.distributor.full_name) tx = create_text_object(canvas, 2 * cm, PAGE_HEIGHT - 2 * cm, left_text, styleN, align='left') canvas.drawText(tx) tx = create_text_object(canvas, PAGE_WIDTH / 2.0, PAGE_HEIGHT - 2 * cm, center_text, styleN, align='center') canvas.drawText(tx) canvas.setFont(styleN.fontName, styleN.fontSize) canvas.drawRightString(PAGE_WIDTH - 2 * cm, PAGE_HEIGHT - 2 * cm, right_text) canvas.restoreState()
def addFooter(canvas, doc): canvas.setFont('Arial',12) page_num = canvas.getPageNumber() text = "Page %s" % page_num canvas.drawRightString(200*mm, 10*mm, text) canvas.drawRightString(200*mm, 20*mm, "Signature_________________ Date:_______________") canvas.drawRightString(110*mm, 10*mm, "REPORT Model XXXX Generated on:" + datetime.datetime.now().strftime('%Y%m%d%H%M%S')) canvas.drawRightString(50*mm, 20*mm, "Proprietary Document")
def textsize(canvas): from reportlab.lib.units import inch from reportlab.lib.colors import magenta, red canvas.setFont("Times-Roman", 20) canvas.setFillColor(red) canvas.drawCentredString(2.75*inch, 2.5*inch, "Font size examples") canvas.setFillColor(magenta) size = 7 y = 2.3*inch x = 1.3*inch for line in lyrics: canvas.setFont("Helvetica", size) canvas.drawRightString(x,y,"%s points: " % size) canvas.drawString(x,y, line) y = y-size*1.2 size = size+1.5
def AllPageSetup(canvas, doc): canvas.saveState() #header canvas.drawString(0.5 * inch, 8 * inch, doc.fund.name) canvas.drawRightString(10.5 * inch, 8 * inch, doc.report_info) #footers canvas.drawString(0.5 * inch, 0.5 * inch, 'Larry Co.') canvas.drawRightString(10.5 * inch, 0.5 * inch, 'Page %d' % (doc.page)) canvas.setFont("Arial", 240) canvas.setStrokeGray(0.90) canvas.setFillGray(0.90) canvas.drawCentredString(5.5 * inch, 3.25 * inch, doc.watermark) canvas.restoreState()
def on_page(canvas,doc): margin = DPI * 0.25 gap = DPI * 0.25 row = rows[doc.page-1] canvas.saveState() # canvas.rect(margin,margin,PAGE_WIDTH-margin*2,PAGE_HEIGHT-margin*2) global SMALL if TINY: canvas.setFont("ComicBold",20) elif SMALL: canvas.setFont("ComicBold",20) # was 20 else: canvas.setFont("ComicBold",25) global teacher_grade grade = teacher_grade if TINY: row['Project Title'] = row['First Name'] + ' ' + row['Last Name'] row['Project Type'] = grade grade = '' row['First Name'] = '' row['Last Name'] = '' project_title = row['Project Title'] or '' project_type = row['Project Type'] or '' if project_title == '': project_title = project_type project_type = '' title = project_title.strip() if not title: title = '' #'Untitled' canvas.drawCentredString(PAGE_WIDTH*0.5,PAGE_HEIGHT-margin*4,title) canvas.setFont("ComicBold",18) if SMALL or TINY: canvas.setFont("ComicBold",16) canvas.drawRightString(PAGE_WIDTH - DPI*0.5,gap*5,row['First Name'] + ' ' + row['Last Name']) canvas.setFont("Comic",15) if SMALL or TINY: canvas.setFont("ComicBold",13) canvas.drawRightString(PAGE_WIDTH - DPI*0.5,gap*4,grade) canvas.drawRightString(PAGE_WIDTH - DPI*0.5,gap*3,project_type) canvas.drawRightString(PAGE_WIDTH - DPI*0.5,gap*2,teacher_honorific+'. '+teacher_name+', Rm. '+str(teacher_room)) style = ParagraphStyle( name='', leading=20, fontName='Comic', fontSize=15, ) width = PAGE_WIDTH - gap*8 height = PAGE_HEIGHT - gap*16 project_description = row['Project Description'] or '' paragraph = Paragraph(project_description, style) w, h = paragraph.wrap(width, height) paragraph.drawOn(canvas,gap*4,PAGE_HEIGHT-gap*5-h) canvas.restoreState()
def seq_scale(canvas, scX, scY, incrT, incrN, dip, dop) : """Draws the sequence scale bar.""" canvas.setLineWidth(1.2) canvas.setFillColor(black) incrCNT = 0 # initialize count of increments psc = canvas.beginPath() psc.moveTo(scX, scY+dip-dop) # start at beginning (duh!) psc.lineTo(scX+incrT*incrN, scY+dip-dop) # draw the scale baseline # draw ticks until the max number of increments is reached while incrCNT <= incrN : psc.moveTo(scX+incrT*incrCNT, scY+dip-dop) psc.lineTo(scX+incrT*incrCNT, scY+dip) incrCNT += 1 canvas.drawPath(psc, stroke=1, fill=0) psc.close() # write out scale extremities values (needs hand-fix if not using kbs) canvas.setFont(rFont,NfSize) canvas.drawRightString(scX, scY+dip+dop, '0') canvas.drawString(scX+incrT*incrN, scY+dip+dop, str(incrN)+' kb')
def _footer(canvas, doc): splunkLayoutSettings = PAPERSIZES[doc.splunkPaperSize] canvas.saveState() canvas.setStrokeColorRGB(0.8, 0.8, 0.8) canvas.setLineWidth(1) # hairline canvas.line(inch, inch, doc.width + inch, inch) canvas.setStrokeColorRGB(0.5, 0.5, 0.5) canvas.setFillColorRGB(0.586, 0.586, 0.586) canvas.drawRightString(doc.width + inch, 0.75 * inch - _TEXT_OFFSET, "Page %d" % (doc.page)) # draw title centered and ellipsized ellipsizedTitle = _ellipsize(doc.getTitle(), splunkLayoutSettings['ellipsizedTitleCount']) ellipsizedTitleWidth = doc.getFontManager().textWidth( ellipsizedTitle, _TITLE_SIZE) textObject = canvas.beginText( inch + doc.width / 2 - ellipsizedTitleWidth / 2, 0.75 * inch - _TEXT_OFFSET) doc.getFontManager().addTextAndFontToTextObject(textObject, ellipsizedTitle, _TITLE_SIZE) canvas.drawText(textObject) timestamp = doc.getTimestamp() timestampWidth = doc.getFontManager().textWidth(timestamp, _DATE_SIZE) textObject = canvas.beginText(inch + doc.width - timestampWidth, inch - _TEXT_OFFSET) doc.getFontManager().addTextAndFontToTextObject(textObject, timestamp, _DATE_SIZE) canvas.drawText(textObject) canvas.restoreState() canvas.saveState() if doc.getLogoDrawing() != None: logoDrawing = doc.getLogoDrawing() renderPDF.draw(logoDrawing, canvas, inch, inch - logoDrawing.height - _LOGO_OFFSET, showBoundary=False) canvas.restoreState()
def footer(canvas, DOC): """Draws the page footer""" arcpy.AddMessage("Drawing Footer...") canvas.saveState() canvas.setFont("Vera", 7.5) text = MAPHEADERTEXT date_now = datetime.datetime.now() date_formatted = (str(time.strftime("%b")) + " " + str(date_now.day) + ", " + str(date_now.year)) canvas.drawRightString(DOC.width - (DOC.rightMargin - 2.35 * inch), 0.5 * DOC.bottomMargin, date_formatted) canvas.setFillGray(0.70) canvas.drawString(DOC.leftMargin - 25, 0.5 * DOC.bottomMargin, text) canvas.setLineWidth(2) canvas.setStrokeColor(Color(0, 0.2627450980392157, 0.42745098039215684, 1)) pagex = 47.5 pagey = 0.75 * DOC.bottomMargin canvas.line(pagex, pagey, (PAGE_WIDTH - pagex), pagey) canvas.restoreState()
def Barre(self, canvas, x, y, largeur, hauteur, label, heureDebut, heureFin, IDcategorie, facteurAgrandissement): # Dessin d'une barre x = ((x-COORD_LIGNE[0]) * facteurAgrandissement) + COORD_LIGNE[0] largeur = largeur * facteurAgrandissement paddingTexte = 3 nom, IDcat_parent, ordre, couleur, totalHeures = DICT_CATEGORIES[IDcategorie] r, g, b = ConvertCouleur(FormateCouleur(couleur)) canvas.setFillColorRGB(r, g, b) canvas.rect(x, y, largeur, hauteur, fill=1) canvas.setFillColorRGB(0, 0, 0) canvas.setFont("Helvetica", 8) # Dessin des heures if MODE_TEXTE == 2 : y = y + 10 heureDebut = str(heureDebut)[0:2] + "h" + str(heureDebut)[3:5] canvas.drawString(x + paddingTexte, y + paddingTexte, heureDebut) heureFin = str(heureFin)[0:2] + "h" + str(heureFin)[3:5] canvas.drawRightString(largeur + x - paddingTexte, y + paddingTexte, heureFin) # Dessin de l'intitulé if MODE_TEXTE == 2 and label != "" : canvas.drawString(x + paddingTexte, y + paddingTexte - 10, label)
def footer(canvas, DOC): """Draws the page footer""" arcpy.AddMessage("Drawing Footer...") canvas.saveState() canvas.setFont("Vera", 7.5) text = MAPHEADERTEXT date_now = datetime.datetime.now() date_formatted = (str(time.strftime("%b")) + " " + str(date_now.day) + ", " + str(date_now.year)) canvas.drawRightString(DOC.width - (DOC.rightMargin-2.35*inch), 0.5*DOC.bottomMargin, date_formatted) canvas.setFillGray(0.70) canvas.drawString(DOC.leftMargin - 25, 0.5*DOC.bottomMargin, text) canvas.setLineWidth(2) canvas.setStrokeColor(Color(0, 0.2627450980392157, 0.42745098039215684, 1)) pagex = 47.5 pagey = 0.75*DOC.bottomMargin canvas.line(pagex, pagey, (PAGE_WIDTH - pagex), pagey) canvas.restoreState()
def _add_page_outline(self, canvas): start_posn = self.start_posn canvas.setLineWidth(2) canvas.rect(cm, cm, PAGE_WIDTH-2*cm, PAGE_HEIGHT-2*cm) canvas.drawImage(LOGO_PATH, 0.5*inch, start_posn, height=0.5*inch, width=1.875*inch) canvas.setFont('Helvetica-Bold', 24) canvas.drawRightString(PAGE_WIDTH-(0.5*inch), start_posn + 0.15*inch, 'REGISTRATION FORM') footer_text = 'This form created on ' footer_text += datetime.now().strftime('%Y-%m-%d %I:%M:%S %p') canvas.setFont('Helvetica', 9) canvas.drawRightString(PAGE_WIDTH-(0.5*inch), 0.5*inch, footer_text) self.start_posn = start_posn - 0.4 * inch sales_rep_text = 'BOOKING REP: ' if self.user.first_name or self.user.last_name: sales_rep_text += self.user.first_name + ' ' + self.user.last_name else: sales_rep_text += self.user.username canvas.setFont('Helvetica-Bold', 9.5) canvas.drawString(0.5*inch, 0.5*inch, sales_rep_text)
def header(canvas, doc): # Save the state of our canvas so we can draw on it canvas.saveState() canvas.setFont("Times-Roman", 12) left = 0.98 * inch right = 600 - 0.59 * inch y = 731 canvas.setTitle("documento_oficial_webCGAE") fn = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'static/Atividades/icon_ifc2.jpg') canvas.drawImage(fn, 10.2 * cm, 770, width=40, height=40) canvas.drawCentredString(11.0 * cm, 760, "Ministério da Educação") canvas.drawCentredString( 11.0 * cm, 747, "Secretaria de Educação Profissional e Tecnológica") canvas.drawCentredString(11.0 * cm, 735, "Instituto Federal Catarinense") canvas.line(left, y, right, y) canvas.setFont("Times-Roman", 10) canvas.line(left, y - 24.4 * cm, right, y - 24.4 * cm) fn = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'static/Atividades/icon_ifc.png') canvas.drawImage(fn, left + 10, y - 25.7 * cm, width=140, height=35) canvas.drawRightString(550, y - 24.8 * cm, "Rua das Missões, 100 - Ponta Aguda") canvas.drawRightString(550, y - 25.2 * cm, "Blumenau/SC - CEP: 89.051-000") canvas.drawRightString(550, y - 25.6 * cm, "(47) 3331-7800 / [email protected]") # Release the canvas canvas.restoreState()
def header(canvas, doc): canvas.saveState() logo = "/Users/Julian/Documents/Numedi-Internship/2020/PatientRecordGen/Input/gnu.png" horizon_mgin = 20 canvas.setLineWidth(.5) canvas.line(horizon_mgin, doc.height + doc.bottomMargin - 50, horizon_mgin + 100, doc.height + doc.bottomMargin - 50) # left side of header left_mgin = horizon_mgin # x-y coordinates of the logo, starting from the lower left hand corner # The logo's size is changed by changing its width. The heigh will resize to preserve the ratio of the png canvas.drawImage(logo, horizon_mgin, doc.bottomMargin + doc.height, width=0.6 * inch, preserveAspectRatio=True) canvas.setFont('Times-Roman', 10.5) canvas.drawString(left_mgin, doc.height + doc.bottomMargin, "Numedi") canvas.drawString(left_mgin, doc.height + doc.bottomMargin - 15, "Protocol Dream State") canvas.drawString(left_mgin, doc.height + doc.bottomMargin - 30, "Patient %s %s" % (subj_id, site_num)) # right side of header right_mgin = doc.width + doc.leftMargin + doc.rightMargin - horizon_mgin canvas.drawRightString(right_mgin, doc.height + doc.bottomMargin, "Page %d of %d" % (doc.page, numPages)) canvas.setFont('Times-Italic', 10.5) canvas.drawRightString(right_mgin, doc.height + doc.bottomMargin - 15, "Confidential") canvas.setFont('Courier-Bold', 12) canvas.drawString(horizon_mgin, doc.height + doc.bottomMargin - 45, "Adverse Events") canvas.restoreState()
def capa(canvas, doc): cabecalho = Image('static/topFrame.png', 535, 63) w, h = cabecalho.wrap(doc.width, doc.topMargin) cabecalho.drawOn(canvas, doc.leftMargin + 5, doc.height + doc.topMargin - 40) canvas.setFont('Helvetica', 14) canvas.setFillColor(HexColor('#3366cc')) canvas.drawRightString(560, 220, doc_config['laudo']) canvas.setFont('Helvetica', 10) canvas.setFillColor(HexColor('#6a6a6a')) canvas.drawRightString(560, 180, doc_config['nome']) canvas.setFillColor(HexColor('#6a6a6a')) canvas.drawRightString(560, 160, doc_config['empresa']) canvas.setFillColor(HexColor('#6a6a6a')) canvas.drawRightString(560, 140, doc_config['cargo'])
def _create_header(self, canvas, doc): #Draw the logo in the upper left if self.company.lower() == 'dellarobbia thailand': path = """https://s3-ap-southeast-1.amazonaws.com/media.dellarobbiathailand.com/logo/form_logo.jpg""" else: path = "https://s3-ap-southeast-1.amazonaws.com/media.dellarobbiathailand.com/logo/Alinea-Logo_Master.jpg" # Read image from link img = utils.ImageReader(path) # Get Size img_width, img_height = img.getSize() new_width = (img_width * logo_height) / img_height canvas.drawImage(path, 42, 760, height=logo_height, width=new_width) canvas.setFont('Helvetica', 8) canvas.setFillColorCMYK(0, 0, 0, 60) #Add Company Information in under the logo if dellarobbia if self.company.lower() == 'dellarobbia thailand': canvas.drawString(42, 760, "78/448 Moo.6 Lam Lukka Rd. Bueng Kham Phroi, Lam Lukka") canvas.drawString(42, 750, "Pathum Thani, Thailand, 12150") canvas.drawString(42, 740, "+66 2 508 8681") else: canvas.drawString(42, 760, "78/448 Moo.6 Lam Lukka Rd. Bueng Kham Phroi, Lam Lukka") canvas.drawString(42, 750, "Pathum Thani, Thailand, 12150") canvas.drawString(42, 740, "+66 2 508 8681") #canvas.drawString(42, 730, "www.dellarobbiathailand.com") # Create The document type and document number canvas.setFont("Helvetica", 16) canvas.drawRightString(550, 800, 'Purchase Order') canvas.setFont("Helvetica", 12) canvas.drawRightString(550, 780, 'PO# : {0}'.format(self.id)) # Create a barcode from the id canvas.setFillColorCMYK(0, 0, 0, 1) code = 'PO-{0}'.format(self.id) barcode = code128.Code128(code, barHeight=20, barWidth=0.5 * mm) x_position = 570 - barcode.width # drawOn puts the barcode on the canvas at the specified coordinates barcode.drawOn(canvas, x_position, 750) # Create the revision if self.revision: if self.revision_date: msg = u"Revision: {0}, # {1}" revision_str = msg.format(self.revision_date.strftime('%B %d, %Y'), self.revision) else: msg = u'Revision: # {0}' revision_str = msg.format(self.revision) canvas.setFillColorCMYK(0, 0, 0, 1) canvas.setFont("Helvetica", 12) canvas.drawRightString(550, 730, revision_str)
canvas = canvas.Canvas("pdfs/extra-010.pdf") # # Alinhamento do texto # # A função drawString() desenha o texto com o ponto inicial a esquerda canvas.drawString(100, 700, "primeiro") # A função drawCentredString() desenha o texto com o ponto inicial no xentro canvas.drawCentredString(100, 650, "segundo") # A função drawRightString() desenha o texto com o ponto inicial no xentro canvas.drawRightString(100, 600, "terceiro") # # Alterando a fonte do texto # # O tipo e o tamanho da fonte pode ser alterado com a função setFont(). # Abaixo temos uma lista das fontes disponíveis: # # Courier, Courier-Bold, Courier-Oblique e Courier-BoldOblique; # Helvetica, Helvetica-Bold, Helvetica-Oblique e Helvetica-BoldOblique; # Times-Roman, Times-Bold, Times-Italic e Times-BoldItalic; # Symbol e ZapfDingbats. canvas.setFont('Helvetica', 12)
def create_later_pages(canvas, doc): canvas.saveState() canvas.setFont('Helvetica', 10) canvas.drawString(BORDER_HORIZONTAL, BORDER_VERTICAL, TITLE) canvas.drawRightString(PAGE_WIDTH-BORDER_HORIZONTAL, BORDER_VERTICAL, "Seite {}".format(doc.page)) canvas.restoreState()