diff options
Diffstat (limited to 'vstf/vstf/controller/reporters/report/pdf/pdftemplate.py')
-rw-r--r-- | vstf/vstf/controller/reporters/report/pdf/pdftemplate.py | 114 |
1 files changed, 0 insertions, 114 deletions
diff --git a/vstf/vstf/controller/reporters/report/pdf/pdftemplate.py b/vstf/vstf/controller/reporters/report/pdf/pdftemplate.py deleted file mode 100644 index 69c65401..00000000 --- a/vstf/vstf/controller/reporters/report/pdf/pdftemplate.py +++ /dev/null @@ -1,114 +0,0 @@ -############################################################################## -# Copyright (c) 2015 Huawei Technologies Co.,Ltd and others. -# -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Apache License, Version 2.0 -# which accompanies this distribution, and is available at -# http://www.apache.org/licenses/LICENSE-2.0 -############################################################################## - -import time - -from reportlab.platypus.doctemplate import SimpleDocTemplate -from reportlab.platypus import PageBreak -from vstf.controller.reporters.report.pdf.styles import TemplateStyle, ps_head_lv1, ps_head_lv2, ps_head_lv3 -import vstf.common.constants as cst - - -class BaseDocTemplate(SimpleDocTemplate): - def __init__(self, filename, **kw): - self.allowSplitting = 0 - SimpleDocTemplate.__init__(self, filename, **kw) - - def afterFlowable(self, flowable): - """Registers TOC entries.""" - if flowable.__class__.__name__ == 'Paragraph': - text = flowable.getPlainText() - style = flowable.style.name - if style == ps_head_lv1.name: - self.notify('TOCEntry', (0, text, self.page - 1)) - elif style == ps_head_lv2.name: - self.notify('TOCEntry', (1, text, self.page - 1)) - elif style == ps_head_lv3.name: - self.notify('TOCEntry', (2, text, self.page - 1)) - - -class PdfTemplate(object): - def __init__(self, title, logo, header, footer, note=[], style="default"): - self._style = TemplateStyle(name=style) - self._title = title - self._logo = logo[0] - #self._header = header[0] - self._footer = footer - self._note = note - info = " Generated on %s " % time.strftime(cst.TIME_FORMAT2, time.localtime()) - self._note += [info] - - def myFirstPage(self, canvas, doc): - raise NotImplementedError("abstract StoryDecorator") - - def myLaterPages(self, canvas, doc): - raise NotImplementedError("abstract StoryDecorator") - - def generate(self, story, output): - sizes = (self._style.page_wight, self._style.page_height) - doc = BaseDocTemplate(output, pagesize=sizes) - # doc.build(story, onFirstPage=self.myFirstPage, onLaterPages=self.myLaterPages) - doc.multiBuild(story, onFirstPage=self.myFirstPage, onLaterPages=self.myLaterPages) - - -class PdfVswitch(PdfTemplate): - def myFirstPage(self, canvas, doc): - canvas.saveState() - title_lines = len(self._title) - line_size = [self._style.title_size] * title_lines - line_size.append(0) - - canvas.drawImage(self._logo, - (self._style.page_wight - self._style.logo_width) / 2.0, - self._style.page_height / 2.0 + (1 + self._style.title_leading) * reduce(lambda x, y: x + y, - line_size), - self._style.logo_width, - self._style.logo_height - ) - for i in range(title_lines): - canvas.setFont(self._style.title_font, line_size[i]) - canvas.drawCentredString(self._style.page_wight / 2.0, - self._style.page_height / 2.0 + (1 + self._style.title_leading) * reduce( - lambda x, y: x + y, line_size[i + 1:]), - self._title[i] - ) - size = self._style.body_size - canvas.setFont(self._style.body_font, size) - note_line = len(self._note) - - for i in range(note_line): - print self._note[i] - canvas.drawCentredString(self._style.page_wight / 2.0, - self._style.page_height / 5.0 + (1 + self._style.body_leading) * size * ( - note_line - i - 1), - self._note[i] - ) - size = self._style.body_size - 2 - canvas.setFont(self._style.body_font, size) - canvas.drawCentredString(self._style.page_wight / 2.0, - self._style.page_bottom / 2.0 + (1 + self._style.body_leading) * size, - self._footer[0]) - canvas.restoreState() - - def myLaterPages(self, canvas, doc): - canvas.saveState() - canvas.setLineWidth(self._style.line_width) - canvas.line(self._style.page_left, - self._style.page_height - self._style.page_top, - self._style.page_wight - self._style.page_right, - self._style.page_height - self._style.page_top - ) - size = self._style.body_size - 2 - canvas.setFont(self._style.body_font, size) - canvas.drawCentredString(self._style.page_wight / 2.0, - self._style.page_bottom - 24, - "%s%s Page %2d " % (self._footer[0], " " * 8, doc.page - 1) - ) - canvas.restoreState() - |