Esempio n. 1
0
    def begin(self, name='', typ=''):
        styleSheet = getSampleStyleSheet()
        self.code = styleSheet['Code']
        self.bt = styleSheet['BodyText']
        self.story = []

        # Cover page
        t = time.gmtime(time.time())
        timeString = time.strftime("%Y-%m-%d %H:%M", t)
        self.story.append(
            Paragraph(
                '<font size=18>Documentation for %s "%s"</font>' % (typ, name),
                self.bt))
        self.story.append(
            Paragraph(
                '<font size=18>Generated by: graphdocpy.py version %s</font>' %
                __version__, self.bt))
        self.story.append(
            Paragraph('<font size=18>Date generated: %s</font>' % timeString,
                      self.bt))
        self.story.append(
            Paragraph('<font size=18>Format: PDF</font>', self.bt))
        self.story.append(PageBreak())

        # Table of contents
        toc = TableOfContents()
        self.story.append(toc)
        self.story.append(PageBreak())
Esempio n. 2
0
def print_order_parts_make_procedures(order_parts_ids):
    global dao
    s = ParagraphStyle(name = "zouzz", fontName = 'Helvetica', fontSize=14, leading=16) #, borderWidth=1, borderColor=colors.black)

    filename = make_pdf_filename("PartsProcedure_{}_".format(123321))
    ladderDoc = changing_headers_PDF(filename)
    complete_document = []

    for order_id, parts_ids in dao.order_part_dao.sort_part_id_on_order(order_parts_ids).iteritems():

        complete_document.append(Paragraph('Header',s))
        complete_document.append(FrameBreak())
        complete_document.append(Paragraph('SubHeader',s))
        complete_document.append(FrameBreak())

        # complete_document.append(NextPageTemplate('content'))

        for part_id in parts_ids:
            part = dao.order_part_dao.find_by_id(part_id)
            # print_one_part(part,complete_document)

        # complete_document.append(NextPageTemplate('begin_section'))
        complete_document.append(PageBreak())

    ladderDoc.build(complete_document,canvasmaker=NumberedCanvas)
    open_pdf(filename)
Esempio n. 3
0
def multiple_contexts_and_templates_to_pdf_data(contexts_templates, context_instance=None, filename=None):
    if USE_PYPDF2:
        merger = PdfFileMerger()
    else:
        all_parts = []

    old_lang = translation.get_language()

    for context, template_name in contexts_templates:
        parser = get_parser(template_name)
        if 'language' in context:
            translation.activate(context['language'])
        xml = render_to_string(template_name, context, context_instance)
        if USE_PYPDF2:
            outstream = io.BytesIO()
            outstream.write(parser.parse(xml))
            reader = PdfFileReader(outstream)
            merger.append(reader)
        else:
            parts = parser.parse_parts(xml)
            all_parts += parts
            all_parts.append(PageBreak())

    translation.activate(old_lang)

    if USE_PYPDF2:
        output = io.BytesIO()
        merger.write(output)
        output = output.getvalue()
    else:
        output = parser.merge_parts(all_parts)

    return output
Esempio n. 4
0
    def create_a_page_(self, lst, page_rows, rowheights):
        #页面标头
        if self.page_head:
            for hp in self.page_head:
                lst.append(hp)  #添加页面标头

        #表格数据
        cols_count = len(self.colwidths)
        page_rows_count = len(page_rows)
        #表头
        if self.grid_head:
            page_rows_count += 1
        p_rows = self.grid_head and (self.grid_head, ) or ()
        for row in page_rows:
            try:
                aaa = tuple(row) + ("", ) * cols_count
            except TypeError:
                aaa = (row, ) + ("", ) * cols_count
            p_rows += (aaa[:cols_count],
                       )  # for row in page_rows]) #补全每一行的列数并转换为tuple
        if self.fill_grid and (page_rows_count < self.record_per_page):
            #print "#用空白补全一页的记录,使之达到规定的每页记录数"
            p_rows += ("", ) * (self.record_per_page - page_rows_count)
            page_rows_count = self.record_per_page
        lst.append(
            Table(p_rows, self.colwidths, rowheights[:page_rows_count],
                  self.style))
        #页尾
        if self.page_tail:
            for hp in self.page_tail:
                lst.append(hp)
        lst.append(PageBreak())
Esempio n. 5
0
def export_to_pdf(modeladmin, request, queryset):
    # Create the HttpResponse object with the appropriate PDF headers.
    response = HttpResponse(content_type='application/pdf')
    # Append invoice number and invoice date
    if len(queryset) != 1:
        _file_name = '-'.join([a.invoice_number for a in queryset.order_by("invoice_number")])
        response['Content-Disposition'] = 'attachment; filename="invoice%s.pdf"' %(_file_name.replace(" ", "")[:150])
    else:
        response['Content-Disposition'] = 'attachment; filename="invoice-%s-%s-%s.pdf"' %(queryset[0].patient.name, 
                                                                                          queryset[0].invoice_number, 
                                                                                          queryset[0].invoice_date.strftime('%d-%m-%Y'))
    
    elements = []
    doc = SimpleDocTemplate(response, rightMargin=2*cm, leftMargin=2 * cm, topMargin=1 * cm, bottomMargin=1*cm)
    
    recapitulatif_data = []

    for qs in queryset.order_by("invoice_number"):
        dd = [qs.prestations.all().order_by("date", "carecode__gross_amount")[i:i+20] for i in range(0, len(qs.prestations.all()), 20)]
        for _prestations in dd:
            _inv = qs.invoice_number + (("" + str(dd.index(_prestations) + 1) + qs.invoice_date.strftime('%m%Y')) if len(dd) > 1 else "")
            _result = _build_invoices(_prestations, 
                                      _inv, 
                                      qs.invoice_date, 
                                      qs.accident_id, 
                                      qs.accident_date )
                                      
            elements.extend(_result["elements"])
            recapitulatif_data.append((_result["invoice_number"], _result["patient_name"], _result["invoice_amount"]))
            elements.append(PageBreak())
    elements.extend(_build_recap(recapitulatif_data))
    doc.build(elements)
    return response
Esempio n. 6
0
    def endClass(self, name, doc, bases):
        "Append a graphic demo of a Widget or Drawing at the end of a class."

        PdfDocBuilder0.endClass(self, name, doc, bases)

        aClass = eval('self.skeleton.moduleSpace.' + name)
        if hasattr(aClass, '_nodoc'):
            pass
        elif issubclass(aClass, Widget):
            try:
                widget = aClass()
            except AssertionError as err:
                if _abstractclasserr_re.match(str(err)): return
                raise
            self.story.append(Spacer(0*cm, 0.5*cm))
            self._showWidgetDemoCode(widget)
            self.story.append(Spacer(0*cm, 0.5*cm))
            self._showWidgetDemo(widget)
            self.story.append(Spacer(0*cm, 0.5*cm))
            self._showWidgetProperties(widget)
            self.story.append(PageBreak())
        elif issubclass(aClass, Drawing):
            drawing = aClass()
            self.story.append(Spacer(0*cm, 0.5*cm))
            self._showDrawingCode(drawing)
            self.story.append(Spacer(0*cm, 0.5*cm))
            self._showDrawingDemo(drawing)
            self.story.append(Spacer(0*cm, 0.5*cm))
 def show_capitulos(self, story, capitulos):
     if not capitulos:
         return
     story.append(PageBreak())
     story.append(Paragraph('CAPÍTULOS DE LIBROS', self.style_h3()))
     text = 'Número de capítulos de libros: ' + str(len(capitulos))
     story.append(Paragraph(text, self.style_n()))
     self.list_capitulos(story, capitulos)
 def show_patentes(self, story, patentes):
     if not patentes:
         return
     story.append(PageBreak())
     story.append(Paragraph('PROPIEDAD INTELECTUAL', self.style_h3()))
     text = 'Número de Propiedades Intelectuales: ' + str(len(patentes))
     story.append(Paragraph(text, self.style_n()))
     self.list_patentes(story, patentes)
 def show_tesis(self, story, tesis):
     if not tesis:
         return
     story.append(PageBreak())
     story.append(Paragraph('TESIS DOCTORALES', self.style_h3()))
     text = 'Número de tesis doctorales: ' + str(len(tesis))
     story.append(Paragraph(text, self.style_n()))
     self.list_tesis(story, tesis)
 def show_convenios(self, story, convenios):
     if not convenios:
         return
     story.append(PageBreak())
     story.append(Paragraph('CONVENIOS ACTIVOS', self.style_h3()))
     text = 'Número de convenios activos: ' + str(len(convenios))
     story.append(Paragraph(text, self.style_n()))
     self.list_convenios(story, convenios)
 def show_proyectos(self, story, proyectos):
     if not proyectos:
         return
     story.append(PageBreak())
     story.append(Paragraph('PROYECTOS ACTIVOS', self.style_h3()))
     text = 'Número de proyectos activos: ' + str(len(proyectos))
     story.append(Paragraph(text, self.style_n()))
     self.list_proyectos(story, proyectos)
 def show_congresos(self, story, congresos):
     if not congresos:
         return
     story.append(PageBreak())
     story.append(Paragraph('COMUNICACIONES EN CONGRESOS', self.style_h3()))
     text = 'Número de comunicaciones en congresos: ' + str(len(congresos))
     story.append(Paragraph(text, self.style_n()))
     self.list_congresos(story, congresos)
 def show_articulos(self, story, articulos):
     if not articulos:
         return
     story.append(PageBreak())
     story.append(Paragraph('ARTÍCULOS', self.style_h3()))
     text = 'Número de artículos: ' + str(len(articulos))
     story.append(Paragraph(text, self.style_n()))
     self.list_articulos(story, articulos)
 def show_libros(self, story, libros):
     if not libros:
         return
     story.append(PageBreak())
     story.append(Paragraph('LIBROS', self.style_h3()))
     text = 'Número de libros: ' + str(len(libros))
     story.append(Paragraph(text, self.style_n()))
     self.list_libros(story, libros)
Esempio n. 15
0
 def frameAction(self, frame):
     frame._generated_content = []
     if self.breakTo=='any': # Break only once. None if at top of page
         if not frame._atTop:
             frame._generated_content.append(SetNextTemplate(self.templateName))
             frame._generated_content.append(PageBreak())
     elif self.breakTo=='odd': #Break once if on even page, twice
                               #on odd page, none if on top of odd page
         if frame._pagenum % 2: #odd pageNum
             if not frame._atTop:
                 # Blank pages get no heading or footer
                 frame._generated_content.append(SetNextTemplate(self.templateName))
                 frame._generated_content.append(SetNextTemplate('emptyPage'))
                 frame._generated_content.append(PageBreak())
                 frame._generated_content.append(ResetNextTemplate())
                 frame._generated_content.append(PageBreak())
         else: #even
             frame._generated_content.append(SetNextTemplate(self.templateName))
             frame._generated_content.append(PageBreak())
     elif self.breakTo=='even': #Break once if on odd page, twice
                                #on even page, none if on top of even page
         if frame._pagenum % 2: #odd pageNum
             frame._generated_content.append(SetNextTemplate(self.templateName))
             frame._generated_content.append(PageBreak())
         else: #even
             if not frame._atTop:
                 # Blank pages get no heading or footer
                 frame._generated_content.append(SetNextTemplate(self.templateName))
                 frame._generated_content.append(SetNextTemplate('emptyPage'))
                 frame._generated_content.append(PageBreak())
                 frame._generated_content.append(ResetNextTemplate())
                 frame._generated_content.append(PageBreak())
 def startElement(self, name, attrs):
     if name in ["strong", "em", "i", "b", "u"]:
         self.mode = name
     elif name == "ol":
         self.listcounter = 1
         self.listtype = "ol"
     elif name == "ul":
         self.listtype = "ul"
     elif name == "hr":
         elements.append(PageBreak())
Esempio n. 17
0
def create_user_info_document(output_file, teacher_list):
    logger.debug('Creating user info document...')
    subject_paragraph_style = ParagraphStyle(name='Normal',
                                             fontSize=12,
                                             leading=20,
                                             fontName='Times-Bold',
                                             spaceAfter=0.75 * cm)
    main_paragraph_style = ParagraphStyle(name='Normal',
                                          fontSize=11,
                                          leading=18,
                                          fontName='Times-Roman',
                                          spaceAfter=0.25 * cm,
                                          hyphenationLang='de_DE',
                                          embeddedHyphenation=1,
                                          uriWasteReduce=0.3)
    data_paragraph_style = ParagraphStyle(name='Normal',
                                          fontSize=11,
                                          fontName='Courier',
                                          spaceAfter=0.5 * cm,
                                          alignment=TA_CENTER)
    # prepare data for document
    title = 'Benutzerdaten'
    author = 'bbst - BBS Teacher Management'
    logo = Image('logo.png',
                 width=PAGE_WIDTH - 2 * BORDER_HORIZONTAL,
                 height=5.2445 * cm,
                 hAlign='CENTER')
    info_text_greeting = 'Liebe Kollegin, lieber Kollege,<br/>ihre Benutzerdaten lauten wie folgt:'
    info_text_paragraphs = [
        """Diese Zugangsdaten erlauben die Rechnernutzung in allen Räumen mit dem Logodidact-System.
    Außerdem kann es zum Zugriff auf den Stundenplan über WebUntis und die Lernplattform Moodle genutzt werden.""",
        """In Logodidact, Moodle und WebUntis lässt sich das Passwort ändern. Allerdings gilt jede Änderung nur für
    das jeweilige System! Sollten Sie ihr Passwort vergessen haben, besteht bei Moodle und Webuntis die
    Möglichkeit, sich ein neues Passwort per Mail zusenden zu lassen.""",
        """Weitere Informationen finden Sie im Moodle-Kurs unter
    <a color="blue" href="https://moodle.nibis.de/bbs_osb/course/view.php?id=7">https://moodle.nibis.de/bbs_osb/course/view.php?id=7</a>.
    Bei allen weiteren Fragen können Sie sich gerne bei mir melden.""",
        """<br/>Viele Grüße<br/>&nbsp;&nbsp;&nbsp;&nbsp;Christian Wichmann<br/>&nbsp;&nbsp;&nbsp;&nbsp;[email protected]"""
    ]
    # building document
    doc = SimpleDocTemplate(output_file, author=author, title=title)
    story = []
    for t in teacher_list:
        user_data = '{}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{}'.format(
            t.username.lower(), t.password)
        story.append(logo)
        story.append(Spacer(1, 1.75 * cm))
        story.append(
            Paragraph('<b>{}</b>'.format(title), subject_paragraph_style))
        story.append(Paragraph(info_text_greeting, main_paragraph_style))
        story.append(Paragraph(user_data, data_paragraph_style))
        for p in info_text_paragraphs:
            story.append(Paragraph(p, main_paragraph_style))
        story.append(PageBreak())
    doc.build(story, onFirstPage=build_footer, onLaterPages=build_footer)
Esempio n. 18
0
def renderReport(target, calendar, t1, t2, data):

    for year in range(t1.year, t2.year + 1):
        ##print("year:",year)
        for month in range(1, 13):

            if (hasOrders(calendar[year][month]['week1'])):
                x = calendar[year][month]['week1']
                nT = numberTransmisionsWeek(x)
                t = Table(createWeekTable(x, year, month, 0),
                          colWidths=None,
                          rowHeights=16,
                          style=tabStyle(len(x)))
                ##t = Table([calendar[year][month]['week1']], colWidths=None, rowHeights=None,style = tabStyle )
                lst.append(
                    Table([[leftSide(data, nT), t]],
                          colWidths=None,
                          rowHeights=None,
                          style=outerStyle,
                          vAlign='MIDDLE',
                          hAlign='LEFT'))
                lst.append(PageBreak())
                ##print ("week 1 has orders")
            if (hasOrders(calendar[year][month]['week2'])):
                x = calendar[year][month]['week2']
                nT = numberTransmisionsWeek(x)
                t = Table(createWeekTable(x, year, month, 1),
                          colWidths=None,
                          rowHeights=16,
                          style=tabStyle(len(x)))
                ##t = Table([calendar[year][month]['week2']], colWidths=None, rowHeights=None, style = tabStyle)
                lst.append(
                    Table([[leftSide(data, nT), t]],
                          colWidths=None,
                          rowHeights=None,
                          style=outerStyle,
                          vAlign='MIDDLE',
                          hAlign='LEFT'))
                lst.append(PageBreak())
                ##print ("week 2 has orders")

    target.build(lst)
Esempio n. 19
0
    def create_doc(self):

        self.story.append(self.reportHeader())
        
        self.story.append(Spacer(1,0.2*inch))

        self.story.append(self.reportTable())
        
        self.story.append(PageBreak())

        self.build_document()
Esempio n. 20
0
 def AddStoryElement(self, element):
     if element.tag == "para":
         styleName = element.get("style", "default")
         style = self.paragraphStyles[styleName]
         element.attrib.clear()
         text = cElementTree.tostring(element)
         rotated = self._ConvertNumber(element, "rotate", 0)
         cls = RotatedParagraph if rotated else Paragraph
         para = cls(text, style)
         self.story.append(para)
     elif element.tag == "nextPage":
         self.story.append(PageBreak())
     elif element.tag == "nextFrame":
         self.story.append(FrameBreak())
     elif element.tag == "spacer":
         length = self._ConvertNumber(element, "length", 0)
         self.story.append(Spacer(length, length))
     elif element.tag == "setNextTemplate":
         name = element.attrib["name"]
         self.story.append(NextPageTemplate(name))
     elif element.tag == "blockTable":
         styleName = element.get("style", "default")
         style = self.tableStyles[styleName]
         if self.tableCommands:
             style = TableStyle(self.tableCommands, style)
         repeatRows = self._ConvertNumber(element, "repeatRows", 0)
         hAlign = element.get("hAlign", "CENTER")
         vAlign = element.get("vAlign", "MIDDLE")
         columnWidths = self._ConvertNumberList(element, "colWidths", [])
         pageRows = self._ConvertNumber(element, "pageRows")
         if not pageRows:
             self.story.append(
                 LongTable(self.tableRows,
                           columnWidths,
                           self.tableRowHeights,
                           style=style,
                           hAlign=hAlign,
                           vAlign=vAlign,
                           repeatRows=repeatRows))
         else:
             headerRows = self.tableRows[:repeatRows]
             headerRowHeights = self.tableRowHeights[:repeatRows]
             rows = self.tableRows[repeatRows:]
             rowHeights = self.tableRowHeights[repeatRows:]
             while rows:
                 table = LongTable(headerRows + rows[:pageRows],
                                   columnWidths,
                                   headerRowHeights + rowHeights[:pageRows],
                                   style=style,
                                   hAlign=hAlign,
                                   vAlign=vAlign)
                 self.story.append(table)
                 rows = rows[pageRows:]
                 rowHeights = rowHeights[pageRows:]
Esempio n. 21
0
def append_general_conditions(complete_document):
    complete_document.append(PageBreak())
    f = open(os.path.join(resource_dir, "general_conditions.txt"),
             mode="r",
             encoding='utf-8')
    txt = f.read()
    f.close()
    txt = crlf_to_br(txt)
    general_conditions_style = ParagraphStyle(name="regular",
                                              fontName='Helvetica',
                                              fontSize=10,
                                              spaceAfter=6)
    complete_document.append(Paragraph(txt, general_conditions_style))
    return complete_document
Esempio n. 22
0
    def _build(self, doc, ans, component):

        flowables = [
            ComponentFlowable(component=component),
            PageBreak(),
        ]
        ts = self._make_tables(ans)

        for i in range(len(ts) - 1, 0, -1):
            ts.insert(i, self._vspacer(0.25))

        flowables.extend(ts)
        templates = None
        return flowables, templates
Esempio n. 23
0
def gen_pdf(questions, game_rounds):
    """generate speaker PDF"""

    styles = getSampleStyleSheet()
    doc = SimpleDocTemplate("pngs-speaker.pdf")
    doc.pagesize = landscape(A5)
    style = styles["Normal"]
    page_elements = []
    for round in game_rounds:
        for num, question in enumerate(
                questions_per_round(questions, game_round=round)):
            q_data = question.as_pdf_dict
            page_elements.append(
                Paragraph("<em>Game Round</em>: {0}".format(round), style))
            page_elements.append(Spacer(0, 0.1 * cm))
            page_elements.append(
                Paragraph(
                    "<font size=12><em>Question {0}:</em> <bold>{1}</bold>"
                    "</font>".format(num + 1, q_data['text'].encode('utf-8')),
                    style))
            page_elements.append(Spacer(0, 0.2 * cm))
            page_elements.append(
                Paragraph(
                    "<em>Comment</em>: {0}".format(
                        q_data.get('comment').encode('utf-8')), style))
            page_elements.append(Spacer(0, 0.2 * cm))
            page_elements.append(Paragraph("<em>Answers</em>:", style))
            page_elements.append(
                Paragraph(
                    "* " + "<br />* ".join(
                        [unicode(t['text']) for t in q_data['answers']]),
                    style))
            page_elements.append(
                Paragraph("<em>Points</em>: {0}".format(q_data.get('tier')),
                          style))
            page_elements.append(PageBreak())
    doc.build(page_elements)
    return

    Story = [Spacer(0, 1 * cm)]
    p = Paragraph("Blubber1", styles["Normal"])
    Story.append(p)
    p = Paragraph("Blubber2", styles["Normal"])
    Story.append(p)
    Story.append(Spacer(10, 5 * cm))
    p = Paragraph("Blubber3", styles["Normal"])
    Story.append(p)
    #doc.build(Story, onFirstPage=myFirstPage, onLaterPages=myLaterPages)
    doc.build(Story)
 def generate_systematic_pdf(self, filename):
     '''
     The public method to create a pdf file.
     
     Might throw an exception if the file can't be written.
     '''
     
     tree = self.systematic_dao.get_tree()
     
     doc = SimpleDocTemplate(filename)
     story = []
     for child in tree.root_node.children:
         story = self._print_root_node(story, child)
         story.append(PageBreak())
     doc.build(story)        
def generate_pdf(file):
    with open(file, 'r', encoding='utf-8') as file:
        data = file.read().replace('\n', '<br/>') \
            .replace('Juliet: <Media weggelaten> Neutral', 'Juliet: ' + 1 * "<br/>" + 11 * '<br/>' +
                     '<img src= "img_resized/neutral_juliet.jpg"/>' + 1 * '<br/>') \
            .replace('Juliet: <Media weggelaten> Positive', 'Juliet: ' + 1 * "<br/>" + 11 * '<br/>' +
                     '<img src= "img_resized/happy_juliet.jpg"/>' + 1 * '<br/>') \
            .replace('Juliet: <Media weggelaten> Negative', 'Juliet: ' + 1 * "<br/>" + 11 * '<br/>' +
                     '<img src= "img_resized/angry_juliet.jpg"/>' + 1 * '<br/>') \
            .replace('Romeo: <Media weggelaten> Neutral', 'Romeo: ' + 1 * "<br/>" + 11 * '<br/>' +
                     '<img src= "img_resized/neutral_romeo.jpg"/>' + 1 * '<br/>') \
            .replace('Romeo: <Media weggelaten> Positive', 'Romeo: ' + 1 * "<br/>" + 11 * '<br/>' +
                     '<img src= "img_resized/happy_romeo.jpg"/>' + 1 * '<br/>') \
            .replace('Romeo: <Media weggelaten> Negative', 'Romeo: ' + 1 * "<br/>" + 11 * '<br/>' +
                     '<img src= "img_resized/angry_romeo.jpg"/>' + 1 * '<br/>')

    story = [
        DocAssign("currentFrame", "doc.frame.id"),
        DocAssign("currentPageTemplate", "doc.pageTemplate.id"),
        DocAssign("aW", "availableWidth"),
        DocAssign("aH", "availableHeight"),
        DocAssign("aWH", "availableWidth,availableHeight"),
        Paragraph("<b>Romeo and Juliet</b>" + 15 * '<br/>', title),
        Image('img/romeo_juliet.jpg', width=4 * inch, height=5 * inch),
        PageBreak(),
        Paragraph("<b>Introduction</b>", header),
        Paragraph(
            2 * '<br/>' +
            "<i>A 2019 interpretation of the famous love story in the form of a WhatsApp dialogue. Made for NaNoGenMo.</i>",
            normal),
        PageBreak(),
        Paragraph(data, normal)
    ]

    doc = SimpleDocTemplate("romeo_and_juliet.pdf")
    doc.build(story)
Esempio n. 26
0
def get_doc_elements(queryset, med_p=False):
    elements = []
    summary_data = []
    already_added_images = []
    for qs in queryset.order_by("invoice_number"):
        dd = [
            qs.prestations.all().order_by("date", "carecode__name")[i:i + 20]
            for i in range(0, len(qs.prestations.all()), 20)
        ]
        for _prestations in dd:
            _inv = qs.invoice_number + (
                ("" + str(dd.index(_prestations) + 1) +
                 qs.invoice_date.strftime('%m%Y')) if len(dd) > 1 else "")
            _result = _build_invoices(_prestations, _inv, qs.invoice_date,
                                      qs.accident_id, qs.accident_date)

            elements.extend(_result["elements"])
            summary_data.append(
                (_result["invoice_number"], _result["patient_name"],
                 _result["invoice_amount"]))
            elements.append(PageBreak())
            if med_p and qs.medical_prescription and bool(qs.medical_prescription.file) \
                    and qs.medical_prescription.file.file.name not in already_added_images:
                elements.append(
                    Image(qs.medical_prescription.file,
                          width=469.88,
                          height=773.19))
                elements.append(PageBreak())
                already_added_images.append(
                    qs.medical_prescription.file.file.name)
    recap_data = _build_recap(summary_data)
    elements.extend(recap_data[0])
    elements.append(PageBreak())
    elements.extend(_build_final_page(recap_data[1], recap_data[2]))

    return elements
Esempio n. 27
0
    def _build(self, doc, component, unknowns, blanks, collate=True):
        '''
            needs to return 
                flowables, templates
                
            flowables: Flowable list
            templates: PageTemplate list
        '''
        flowables = [
            ComponentFlowable(component),
            PageBreak(),
        ]
        ts = self._new_style(header_line_idx=1, header_line_width=2)
        ts.add('SPAN', (0, 0), (-1, 0))

        if collate:
            unknowns.extend(blanks)
            ans = sorted(unknowns, key=lambda x: x.timestamp)

            bidx = [
                i for i, ai in enumerate(ans)
                if ai.analysis_type.startswith('blank')
            ]

            for bi in bidx:
                ts.add('BACKGROUND', (0, bi + 2), (-1, bi + 2),
                       colors.lightgrey)

            ai = unknowns[0]
            title = ' '.join(map(str.capitalize, ai.analysis_type.split('_')))
            t = self._make_table(ans, ts, title)
            flowables.append(t)

        else:
            for ans in (unknowns, blanks):
                ai = ans[0]
                title = ' '.join(
                    map(str.capitalize, ai.analysis_type.split('_')))
                t = self._make_table(ans, ts, title)

                flowables.append(t)
                flowables.append(self._new_spacer(0, 0.5))

#         frames = [self._default_frame(doc)]
#         template = self._new_page_template(frames)

        return flowables, None
Esempio n. 28
0
    def endFunction(self, name, doc, sig):
        "Append a drawing to the story for special function names."

        if name[:6] != 'sample':
            return

        if VERBOSE:
            print 'GraphPdfDocBuilder.endFunction(%s...)' % name
        PdfDocBuilder0.endFunction(self, name, doc, sig)
        aFunc = eval('self.skeleton.moduleSpace.' + name)
        drawing = aFunc()

        self.story.append(Spacer(0 * cm, 0.5 * cm))
        self._showFunctionDemoCode(aFunc)
        self.story.append(Spacer(0 * cm, 0.5 * cm))
        self._showDrawingDemo(drawing)

        self.story.append(PageBreak())
def create_document(filename):
    import json
    import os
    from reportlab.lib.pagesizes import A4, letter
    from reportlab.platypus import SimpleDocTemplate, Table
    from reportlab.platypus.flowables import PageBreak

    filename = filename.strip()
    company_names = {
        500112: 'SBIN',
        500325: 'RELIANCE INDUSTRIES LTD',
        532540: 'TATA CONSULTANCY SERVICES LTD',
        500209: 'INFOSYS LTD',
        532174: 'ICICI BANK LTD',
        507685: 'WIPRO LTD',
        530965: 'INDIAN OIL CORPORATION LTD',
        500182: 'HERO MOTOCORP LTD',
        532210: 'CITY UNION BANK LTD',
        500180: 'HDFC Bank Ltd',
        500680: 'PFIZER LTD'
    }

    with open(filename, "r") as fp:
        ipynbfile = json.load(fp)

    outputdata = list()
    get_text(ipynbfile, outputdata)
    if outputdata == []:
        return
    tableformat = convert_to_table_format(outputdata)
    filename = os.path.splitext(filename)[0]
    pdf = SimpleDocTemplate(filename + ".pdf", pagesize=letter)
    width = pdf.width
    height = pdf.height
    content = []
    for table in tableformat:
        myw = width / len(table[0]) + 1
        myh = height / len(table[1]) + 1
        table = Table(table, myw, myh)
        content.append(table)
        content.append(PageBreak())
    pdf.build(content)
Esempio n. 30
0
 def create_report(self, data_dict, buff=None):
     self.data = data_dict
     if not buff:
         buff = io.BytesIO()
     pages = [x for x in dir(self) if x.startswith("_page_")]
     story = []
     for page in pages:
         elems = getattr(self, page)()
         story.extend(elems)
         story.append(PageBreak())
     page_t = PageTemplate('normal', [
         Frame(
             self.page_margin[0],
             self.page_margin[1],
             self.page_size[0] - self.page_margin[0] * 2,
             self.page_size[1] - self.page_margin[1] * 2,
             leftPadding=0,
             bottomPadding=0,
             rightPadding=0,
             topPadding=0,
         )
     ])
     doc_t = SignatureDocTemplate(
         buff,
         pagesize=letter,
         title=self.title,
         author=self.author,
         leftMargin=self.page_margin[0],
         rightMargin=self.page_margin[0],
         topMargin=self.page_margin[1],
         bottomMargin=self.page_margin[1],
     )
     doc_t.addPageTemplates(page_t)
     metadata = doc_t.build(story)
     buff.seek(0)
     return {
         "metadata": metadata,
         "document": buff
     }