当前位置: 首页>>代码示例>>Python>>正文


Python SimpleDocTemplate.pagesize方法代码示例

本文整理汇总了Python中reportlab.platypus.SimpleDocTemplate.pagesize方法的典型用法代码示例。如果您正苦于以下问题:Python SimpleDocTemplate.pagesize方法的具体用法?Python SimpleDocTemplate.pagesize怎么用?Python SimpleDocTemplate.pagesize使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在reportlab.platypus.SimpleDocTemplate的用法示例。


在下文中一共展示了SimpleDocTemplate.pagesize方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: generate_consolidated_week_report

# 需要导入模块: from reportlab.platypus import SimpleDocTemplate [as 别名]
# 或者: from reportlab.platypus.SimpleDocTemplate import pagesize [as 别名]
    def generate_consolidated_week_report(self, cr, uid):
        parent_user_ids = self._get_user(cr, uid, group2=True)
        if parent_user_ids:
            for manager in parent_user_ids:
                email = manager.email if self.validate_email(manager.email) else None
                # CONTENIDO DE REPORTE
                styles = getSampleStyleSheet()
                elements = []
                title = u'Reporte Semanal de Cobranza Consolidado'
                style_h_one = styles['Heading1']
                elements.append(Paragraph(title, style_h_one))
                elements.append(Spacer(1, 0.25 * inch))
                # facturas por ejecutivas
                user_ids = self._get_user(cr, uid, group1=True)
                for user in user_ids:
                    res = self._query_report(cr, uid, user_id=user.id)
                    elements = self._report_table(cr, uid, res, elements, title=user.name)
                # facturas sin ejecutivas
                res = self._query_report(cr, uid)
                elements = self._report_table(cr, uid, res, elements, title=u'Sin ejecutiva responsable')

                # PDF
                pdfreport_fd, pdfreport_path = tempfile.mkstemp(suffix='.pdf', prefix='reporte.cobranza.consol.')
                body_html = 'Hola <b>%s</b>, <p>Se adjunta el reporte semanal de cobranza consolidado.</p>' % manager.name
                doc = SimpleDocTemplate(pdfreport_path, pagesize=A4, rightMargin=30, leftMargin=30, topMargin=30,
                                        bottomMargin=18)
                doc.pagesize = landscape(A4)
                doc.build(elements)
                attachments = [[title, pdfreport_path]]
                # EMAIL
                self.send_mail(cr, uid, attachments=attachments, email_to=email, subject=title,
                               html=body_html, force_send=True)
        return True
开发者ID:lamurga,项目名称:odoo-openerp-samples,代码行数:35,代码来源:account_invoice_report.py

示例2: make_pdf

# 需要导入模块: from reportlab.platypus import SimpleDocTemplate [as 别名]
# 或者: from reportlab.platypus.SimpleDocTemplate import pagesize [as 别名]
def make_pdf(filename, parameter):
    parameter = read_result(parameter)
    doc = SimpleDocTemplate(filename, pagesize=A4, rightMargin=30, leftMargin=30, topMargin=30, bottomMargin=18)
    doc.pagesize = landscape(A4)
    elements = []
    data = [['Number', 'Value']]
    write_data(parameter, data)

    style = TableStyle([('ALIGN',(1,1),(-2,-2),'RIGHT'),
                       ('TEXTCOLOR',(1,1),(-2,-2),colors.red),
                       ('VALIGN',(0,0),(0,-1),'TOP'),
                       ('TEXTCOLOR',(0,0),(0,-1),colors.blue),
                       ('ALIGN',(0,-1),(-1,-1),'CENTER'),
                       ('VALIGN',(0,-1),(-1,-1),'MIDDLE'),
                       ('TEXTCOLOR',(0,-1),(-1,-1),colors.green),
                       ('INNERGRID', (0,0), (-1,-1), 0.25, colors.black),
                       ('BOX', (0,0), (-1,-1), 0.25, colors.black),
                       ])

    s = getSampleStyleSheet()
    s = s["BodyText"]
    s.wordWrap = 'CJK'
    data2 = [[Paragraph(cell, s) for cell in row] for row in data]
    t = Table(data2)
    t.setStyle(style)

    elements.append(t)
    doc.build(elements)
开发者ID:fargelus,项目名称:SAPR,代码行数:30,代码来源:export_file.py

示例3: buildTable

# 需要导入模块: from reportlab.platypus import SimpleDocTemplate [as 别名]
# 或者: from reportlab.platypus.SimpleDocTemplate import pagesize [as 别名]
def buildTable(data):
  doc = SimpleDocTemplate("MOOSE_requirements_tracability.pdf", pagesize=A4, rightMargin=30,leftMargin=30, topMargin=30,bottomMargin=18)
  doc.pagesize = landscape(A4)
  elements = []

  #Configure style and word wrap
  s = getSampleStyleSheet()
  s = s["BodyText"]
  s.wordWrap = 'CJK'

  pdf_data = [["Requirement", "Description", "Test Case(s)"]]

  #TODO: Need a numerical sort here
  keys = sorted(data.keys())

  for key in keys:
    data[key][2] = '\n'.join(data[key][2])
    pdf_data.append([Paragraph(cell, s) for cell in data[key]])


  # Build the Table and Style Information
  tableThatSplitsOverPages = Table(pdf_data, repeatRows=1)
  tableThatSplitsOverPages.hAlign = 'LEFT'
  tblStyle = TableStyle([('TEXTCOLOR',(0,0),(-1,-1),colors.black),
                         ('VALIGN',(0,0),(-1,-1),'TOP'),
                         ('LINEBELOW',(0,0),(-1,-1),1,colors.black),
                         ('INNERGRID', (0,0), (-1,-1),1,colors.black),
                         ('BOX',(0,0),(-1,-1),1,colors.black),
                         ('BOX',(0,0),(0,-1),1,colors.black)])
  tblStyle.add('BACKGROUND',(0,0),(-1,-1),colors.lightblue)
  tblStyle.add('BACKGROUND',(0,1),(-1,-1),colors.white)
  tableThatSplitsOverPages.setStyle(tblStyle)
  elements.append(tableThatSplitsOverPages)

  doc.build(elements)
开发者ID:bggaston,项目名称:moose,代码行数:37,代码来源:tracability_matrix.py

示例4: generatePdfReport

# 需要导入模块: from reportlab.platypus import SimpleDocTemplate [as 别名]
# 或者: from reportlab.platypus.SimpleDocTemplate import pagesize [as 别名]
def generatePdfReport(data):
    """
    Function to generate report in PDF format.
    Input:- Details of aliens
    Output:- Details of aliens in PDF file.
    """
    doc = SimpleDocTemplate("aliens.pdf", pagesize=A4, rightMargin=30,leftMargin=30, topMargin=30,bottomMargin=18)
    doc.pagesize = landscape(A4)
    elements = []

    # Style of table, imported from reportlab lib.
    # user styling, can be anything you want.
    style = TableStyle([('ALIGN',(1,1),(-2,-2),'RIGHT'),
                           ('TEXTCOLOR',(1,1),(-2,-2),colors.red),
                           ('VALIGN',(0,0),(0,-1),'TOP'),
                           ('TEXTCOLOR',(0,0),(0,-1),colors.blue),
                           ('ALIGN',(0,-1),(-1,-1),'CENTER'),
                           ('VALIGN',(0,-1),(-1,-1),'MIDDLE'),
                           ('TEXTCOLOR',(0,-1),(-1,-1),colors.green),
                           ('INNERGRID', (0,0), (-1,-1), 0.25, colors.black),
                           ('BOX', (0,0), (-1,-1), 0.25, colors.black),
                           ])

    #Configure style and word wrap
    s = getSampleStyleSheet()
    s = s["BodyText"]
    s.wordWrap = 'CJK' # to fit text in the cell, otherwise cross the margin
    data2 = [[Paragraph(cell, s) for cell in row] for row in data]
    t=Table(data2)
    t.setStyle(style)

    #Send the data and build the file
    elements.append(t)
    doc.build(elements)
开发者ID:bokamvinaykumar,项目名称:aliens,代码行数:36,代码来源:bokam.py

示例5: render

# 需要导入模块: from reportlab.platypus import SimpleDocTemplate [as 别名]
# 或者: from reportlab.platypus.SimpleDocTemplate import pagesize [as 别名]
 def render(self):
     elements = []
     
     self.styles['Title'].alignment = TA_LEFT
     self.styles['Title'].fontName = self.styles['Heading2'].fontName = "Helvetica"
     self.styles["Normal"].fontName = "Helvetica"
     self.styles["Normal"].fontSize = 10
     self.styles["Normal"].fontWeight = "BOLD"
         
     filename = self.filename + datetime.now().strftime("%Y%m%d%H%M%S") + ".pdf"
     doc = SimpleDocTemplate(filename)
     
     elements.append(Paragraph(self.title, self.styles['Title']))
     
     clinics = Provider.objects.values('clinic').distinct()
     
     for data in self.data:
         elements.append(data)
     
     #elements.append(Paragraph("Created: %s" % datetime.now().strftime("%d/%m/%Y"), styles["Normal"]))        
     if self.landscape is True:
         doc.pagesize = landscape(A4)
     
     doc.build(elements, onFirstPage=self.myFirstPage, onLaterPages=self.myLaterPages)
     
     response = HttpResponse(mimetype='application/pdf')
     response['Cache-Control'] = ""
     response['Content-Disposition'] = "attachment; filename=%s" % filename
     response.write(open(filename).read())
     os.remove(filename)
     return response
开发者ID:ukanga,项目名称:mctc,代码行数:33,代码来源:report.py

示例6: print_big_list

# 需要导入模块: from reportlab.platypus import SimpleDocTemplate [as 别名]
# 或者: from reportlab.platypus.SimpleDocTemplate import pagesize [as 别名]
def print_big_list(data):
    # Create the HttpResponse object with the appropriate PDF headers.
    response = HttpResponse(content_type='application/pdf')
    response['Content-Disposition'] = 'inline; filename="RECAP.pdf"'

    doc = SimpleDocTemplate(response, rightMargin=20, leftMargin=20, topMargin=20, bottomMargin=20)
    doc.pagesize = landscape(A4)
    elements = []

    t = Table(data, colWidths=(None, None, 300, 60))

    # Styling the titles and the grid
    style = TableStyle([('FONT', (0, 0), (-1, 0), 'Helvetica-Bold'),
                        ('VALIGN', (0, 0), (-1, 0), 'MIDDLE'),
                        ('ALIGN', (0, 0), (-1, 0), 'CENTER'),
                        ('INNERGRID', (0, 0), (-1, -1), 0.25, colors.grey),
                        ('BOX', (0, 0), (-1, -1), 0.25, colors.grey),
                        ])

    t.setStyle(style)

    # we color lines alternatively
    for each in range(len(data)):
        if each % 2 == 0:
            bg_color = colors.white
        else:
            bg_color = colors.lightblue

        t.setStyle(TableStyle([('BACKGROUND', (0, each), (-1, each), bg_color)]))

    # Send the data and build the file
    elements.append(t)
    doc.build(elements)

    return response
开发者ID:martinogden,项目名称:24h-du-jeu,代码行数:37,代码来源:pdfs.py

示例7: generate_week_report

# 需要导入模块: from reportlab.platypus import SimpleDocTemplate [as 别名]
# 或者: from reportlab.platypus.SimpleDocTemplate import pagesize [as 别名]
    def generate_week_report(self, cr, uid):
        user_ids = self._get_user(cr, uid, group1=True)
        if user_ids:
            for user in user_ids:
                res = self._query_report(cr, uid, user_id=user.id)
                if res:
                    email = user.email if self.validate_email(user.email) else None
                    # CONTENT
                    styles = getSampleStyleSheet()
                    elements = []
                    title = u'Reporte Semanal de Cobranza'
                    style_h_one = styles['Heading1']
                    elements.append(Paragraph(title, style_h_one))
                    elements.append(Spacer(1, 0.25 * inch))

                    # PDF
                    pdfreport_fd, pdfreport_path = tempfile.mkstemp(suffix='.pdf', prefix='reporte.cobranza.')
                    body_html = 'Hola <b>%s</b>, <p>Se adjunta el reporte de cobranza de la semana.</p>' % user.name
                    doc = SimpleDocTemplate(pdfreport_path, pagesize=A4, rightMargin=30, leftMargin=30, topMargin=30,
                                            bottomMargin=18)
                    doc.pagesize = landscape(A4)
                    doc.build(self._report_table(cr, uid, res, elements))
                    attachments = [[title, pdfreport_path]]
                    # EMAIL
                    self.send_mail(cr, uid, attachments=attachments, email_to=email, subject=title,
                                   html=body_html, force_send=True)
        return True
开发者ID:lamurga,项目名称:odoo-openerp-samples,代码行数:29,代码来源:account_invoice_report.py

示例8: PrintPdf

# 需要导入模块: from reportlab.platypus import SimpleDocTemplate [as 别名]
# 或者: from reportlab.platypus.SimpleDocTemplate import pagesize [as 别名]
def PrintPdf(projectNo, probeInf, holelist, index=None):
    import os
    from config import basedir
    cptPath = os.path.join(basedir, 'app', 'static', 'download')

    if not os.path.exists(cptPath):
        os.makedirs(cptPath)
    doc = SimpleDocTemplate(cptPath,
                            pagesize=A4,
                            rightMargin=10,
                            leftMargin=20,
                            topMargin=30,
                            bottomMargin=20
                            )
    doc.pagesize = portrait(A4)
    filename = ''
    elements = []
    for i in range(len(holelist)):
        if index is not None:
            i = index
            filename = projectNo + '__' + holelist[i].holeName + '.pdf'
            # Attenion:where elments.extend must be used,but not elements.append
            elements.extend(Cpt2Pdf(holelist[i], probeInf))
            break;
        else:
            filename = projectNo + '__' + 'all.pdf'
            # Attenion:where elments.extend must be used,but not elements.append
            elements.extend(Cpt2Pdf(holelist[i], probeInf))
    doc.filename = os.path.join(cptPath, filename)
    print("dd" + doc.filename)
    doc.build(elements)
    # url='/'.join(['download',projectNo,filename])
    # os.path.join('download',projectNo,filename)将返回download\projectNo\filename,浏览器无法识别
    return doc.filename
开发者ID:iw518,项目名称:fernando,代码行数:36,代码来源:genpdf.py

示例9: pre_save_enrollment

# 需要导入模块: from reportlab.platypus import SimpleDocTemplate [as 别名]
# 或者: from reportlab.platypus.SimpleDocTemplate import pagesize [as 别名]
def pre_save_enrollment(signal, sender, instance, **kwargs):
    images_path = os.path.join(settings.PROJECT_DIR, 'static_files', 'img')
    signature_path = os.path.join(images_path, 'signature.jpg')
    logo_path = os.path.join(images_path, 'cert_logo.png')
    context = {
        'enrollment': instance, 
        'domain': Site.objects.get_current().domain,
        'signature_path': signature_path,
        'logo_path': logo_path,
    }
    certificate_txt = render_to_string('certificates/certificate.txt', context)

    elements = []
    styles = getSampleStyleSheet()
    styles.add(
        ParagraphStyle(
            name='Justify', alignment=TA_JUSTIFY, fontSize=16, leading=22
        )
    )

    elements.append(Spacer(1, 16))
    paragraphs = certificate_txt.split("\n")
    for p in paragraphs:
        if p.strip():
            elements.append(Paragraph(p, styles['Justify']))
            elements.append(Spacer(1, 16))

    output = StringIO.StringIO()
    doc = SimpleDocTemplate(output, topMargin=3 * cm, bottomMargin=0)
    doc.pagesize = landscape(A4)
    doc.build(elements)

    filename = u'{0}.pdf'.format(instance.name)
    pdf = output.getvalue()
    instance.certificate.save(filename, ContentFile(pdf), save=False)
开发者ID:pythonNordeste,项目名称:pyne2013,代码行数:37,代码来源:models.py

示例10: pdf_jeu_genre

# 需要导入模块: from reportlab.platypus import SimpleDocTemplate [as 别名]
# 或者: from reportlab.platypus.SimpleDocTemplate import pagesize [as 别名]
def pdf_jeu_genre(request):
    response = HttpResponse(content_type='application/pdf')
    response['Content-Disposition'] = 'inline; filename="jeu_genre.pdf"'

    doc = SimpleDocTemplate(response, rightMargin=20, leftMargin=20, topMargin=20, bottomMargin=20)
    doc.pagesize = A4
    elements = []

    # Get data
    games = Game.objects.filter(owner__is_bringing=True).distinct()

    data = [
        ["JEU", "GENRE", "", "JEU", "GENRE"],
    ]

    styles = getSampleStyleSheet()

    # We build the data
    l = len(games)
    if l % 2 == 0:
        sc = l/2
    else:
        sc = l/2+1
    for i in range(sc):
        # in case we have an odd number of elements, we display the last line
        if l % 2 != 0 and i == l/2:
            data.append([Paragraph(games[i].name, styles['BodyText']), games[i].type_genre, "", "", ""])
        elif i < l:
            data.append([Paragraph(games[i].name, styles['BodyText']), games[i].type_genre, "", Paragraph(games[i+sc].name, styles['BodyText']), games[i+sc].type_genre])

    t = Table(data, colWidths=(None, 60, 50, None, 60))

    # Styling the titles and the grid
    style = TableStyle([('FONT', (0, 0), (-1, 0), 'Helvetica-Bold'),
                        ('VALIGN', (0, 0), (-1, 0), 'MIDDLE'),
                        ('ALIGN', (0, 0), (-1, 0), 'CENTER'),
                        ('INNERGRID', (0, 0), (1, -1), 0.25, colors.grey),
                        ('INNERGRID', (3, 0), (-1, -1), 0.25, colors.grey),
                        ('BOX', (0, 0), (1, -1), 0.25, colors.grey),
                        ('BOX', (3, 0), (-1, -1), 0.25, colors.grey),
                        ])

    t.setStyle(style)

    # we color lines alternatively
    for each in range(len(data)):
        if each % 2 == 0:
            bg_color = colors.white
        else:
            bg_color = colors.lightblue

        t.setStyle(TableStyle([('BACKGROUND', (0, each), (1, each), bg_color)]))
        t.setStyle(TableStyle([('BACKGROUND', (3, each), (-1, each), bg_color)]))

    # Send the data and build the file
    elements.append(t)
    doc.build(elements)
    return response
开发者ID:martinogden,项目名称:24h-du-jeu,代码行数:60,代码来源:pdfs.py

示例11: gen_pdf

# 需要导入模块: from reportlab.platypus import SimpleDocTemplate [as 别名]
# 或者: from reportlab.platypus.SimpleDocTemplate import pagesize [as 别名]
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)
开发者ID:c3d2,项目名称:pentanews-quiz,代码行数:57,代码来源:questions2json.py

示例12: generate_pdf

# 需要导入模块: from reportlab.platypus import SimpleDocTemplate [as 别名]
# 或者: from reportlab.platypus.SimpleDocTemplate import pagesize [as 别名]
    def generate_pdf(self):
        """ Generate a pdf version of the pools."""
        doc = SimpleDocTemplate("files/"+self.name + ".pdf", rightMargin=72, leftMargin=72,
                                topMargin=72, bottomMargin=18, showBoundary=1)
        doc.pagesize=landscape(A4)
        Story=[]

        file_path="file_path"
        date = time.ctime()
        header_title="CDL - tableaux de poules"
        number_pool="10"
        field="Jc et Nath \n3080 Tervuren"
        tournament="Double Mixte - Juniors - JUN"

        #frames
        frameTable = Frame(doc.leftMargin, doc.height*0.20,
                    doc.height-doc.rightMargin , 400,
                    leftPadding=0, rightPadding=0, id='normal')

        def footer_header(canvas,doc):
            """Footer and header description"""
            canvas.saveState()
            canvas.setFont('Times-Roman',12)

            #Header
            header_y=doc.height + 72
            canvas.drawString(20, header_y, date)
            canvas.drawString(doc.width/2, header_y, header_title)
            canvas.drawString(doc.leftMargin, header_y-20, "Numéro:")
            canvas.drawString(doc.leftMargin+100, header_y-20, "Terrain:")
            canvas.drawString(doc.leftMargin+5, header_y-45, number_pool)
            canvas.drawString(doc.leftMargin+105, header_y-45, field)
            canvas.drawString(doc.leftMargin+5, header_y-70, tournament)

            #Footer
            footer_y=10
            canvas.drawString(25, footer_y, file_path)
            canvas.drawString(doc.width , footer_y, "page %d" % doc.page)
            canvas.restoreState()

        #Table score

        pools = Pool.objects.filter(tournament=self);
        templates=[]
        for pool in pools:
            Story.append(Spacer(1, 48))
            Story.append(self.pdf_pool(pool))
            Story.append(NextPageTemplate(str(pool)))
            Story.append(PageBreak())
            templates.append(PageTemplate(id=str(pool),frames=frameTable,onPage=footer_header))

        doc.addPageTemplates(templates)

        doc.build(Story)
开发者ID:ivanahad,项目名称:sep2015E,代码行数:56,代码来源:models.py

示例13: getDocument

# 需要导入模块: from reportlab.platypus import SimpleDocTemplate [as 别名]
# 或者: from reportlab.platypus.SimpleDocTemplate import pagesize [as 别名]
def getDocument(filename):
    """Returns a ReportLab Document with the appropriate margins set."""

    doc = SimpleDocTemplate(filename)
    doc.pagesize = (PAGE_WIDTH, PAGE_HEIGHT)
    doc.leftMargin = doc.rightMargin = \
        doc.bottomMargin = inch * 0.5

    doc.topMargin = inch

    return doc
开发者ID:cc-archive,项目名称:scicom,代码行数:13,代码来源:support.py

示例14: write

# 需要导入模块: from reportlab.platypus import SimpleDocTemplate [as 别名]
# 或者: from reportlab.platypus.SimpleDocTemplate import pagesize [as 别名]
 def write(self):
     """Assembles the final PDF and writes to disk."""
     pdf_writer = pyPdf.PdfFileWriter()
     if self.front_matter is not None:
         front_matter = pyPdf.PdfFileReader(file(self.front_matter, "rb"))
         for page in range(front_matter.getNumPages()):
             pdf_writer.addPage(front_matter.getPage(page))
     working_file = tempfile.NamedTemporaryFile(suffix=".pdf", delete=False)
     doc = SimpleDocTemplate(working_file)
     doc.pagesize = portrait(letter)
     story = []
     styles = getSampleStyleSheet()
     for section in self.sections:
         heading_text = section.heading
         story.append(Paragraph(heading_text, styles["Heading1"]))
         for content in section.contents:
             if "figure" in content:
                 figure = content["figure"]
                 if os.path.exists(figure):
                     im = utils.ImageReader(figure)
                     img_width, img_height = im.getSize()
                     aspect = img_height / float(img_width)
                     story.append(Image(figure, width=img_width, height=(img_width * aspect)))
                 if content.get("caption", None) is not None:
                     caption_text = "<font size=10>{0}</font>".format(content["caption"].strip())
                     story.append(Paragraph(caption_text, styles["Italic"]))
                     story.append(Spacer(1, 10))
             if "table" in content:
                 _t = self.build_table(content["table"])
                 story.append(_t)
                 if content.get("caption", None) is not None:
                     caption_text = "<font size=10>{0}</font>".format(content["caption"].strip())
                     story.append(Paragraph(caption_text, styles["Italic"]))
                     story.append(Spacer(1, 10))
             if "text" in content:
                 for para in content["text"]:
                     story.append(Paragraph(para, styles["Normal"]))
                     story.append(Spacer(1, 12))
     doc.build(story)
     body_matter = pyPdf.PdfFileReader(working_file)
     for page in range(body_matter.getNumPages()):
         pdf_writer.addPage(body_matter.getPage(page))
     try:
         os.remove(working_file.name)
     except OSError:  # Windows reports file in use, other OS errors, etc.
         pass
     if self.end_matter is not None:
         end_matter = pyPdf.PdfFileReader(file(self.end_matter, "rb"))
         for page in range(end_matter.getNumPages()):
             pdf_writer.addPage(end_matter.getPage(page))
     output_stream = file(self.output_filename, "wb")
     pdf_writer.write(output_stream)
开发者ID:ccoughlin,项目名称:NDIToolbox,代码行数:54,代码来源:report.py

示例15: handle_pdf

# 需要导入模块: from reportlab.platypus import SimpleDocTemplate [as 别名]
# 或者: from reportlab.platypus.SimpleDocTemplate import pagesize [as 别名]
    def handle_pdf(self, request, queryset):
        if "pdf" not in formats:
            raise ImportError, "The site is not configured to handle pdf."

        # this is again some quick and dirty sample code
        elements = []
        styles = getSampleStyleSheet()
        styles["Title"].alignment = TA_LEFT
        styles["Title"].fontName = styles["Heading2"].fontName = "Helvetica"
        styles["Normal"].fontName = "Helvetica"
        filename = mkstemp(".pdf")[-1]
        doc = SimpleDocTemplate(filename)
        doc.pagesize = pagesizes.landscape(pagesizes.LETTER)

        request = WSGIRequest({"REQUEST_METHOD": "GET"})
        site = RequestContext(request).get("site")
        if site and site.get("title"):
            elements.append(Paragraph(site.get("title"), styles["Title"]))

        elements.append(Paragraph("%s List" % self.model.__name__, styles["Heading2"]))

        data = []
        header = False
        for row in queryset:
            if not header:
                data.append([f["name"] for f in self.fields])
                header = True
            ctx = Context({"object": row})
            values = [Template(h["bit"]).render(ctx) for h in self.fields]
            data.append(values)

        table = PDFTable(data)
        table.setStyle(
            TableStyle(
                [
                    ("ALIGNMENT", (0, 0), (-1, -1), "LEFT"),
                    ("LINEBELOW", (0, 0), (-1, -0), 2, colors.black),
                    ("LINEBELOW", (0, 1), (-1, -1), 0.8, colors.lightgrey),
                    ("FONT", (0, 0), (-1, -1), "Helvetica"),
                    ("ROWBACKGROUNDS", (0, 0), (-1, -1), [colors.whitesmoke, colors.white]),
                ]
            )
        )
        elements.append(table)
        elements.append(Paragraph("Created: %s" % datetime.now().strftime("%d/%m/%Y"), styles["Normal"]))
        doc.build(elements)

        response = HttpResponse(mimetype="application/pdf")
        response["Content-Disposition"] = "attachment; filename=report.pdf"
        response.write(open(filename).read())
        os.remove(filename)
        return response
开发者ID:andymckay,项目名称:django-reusable-tables,代码行数:54,代码来源:table.py


注:本文中的reportlab.platypus.SimpleDocTemplate.pagesize方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。