forked from CGM_Public/pretix_original
Add more flexibility to ReportLabMixin
This commit is contained in:
@@ -20,6 +20,7 @@ from pretix.base.services.stats import order_overview
|
|||||||
|
|
||||||
|
|
||||||
class ReportlabExportMixin:
|
class ReportlabExportMixin:
|
||||||
|
multiBuild = False
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def pagesize(self):
|
def pagesize(self):
|
||||||
@@ -44,21 +45,29 @@ class ReportlabExportMixin:
|
|||||||
pdfmetrics.registerFont(TTFont('OpenSansIt', finders.find('fonts/OpenSans-Italic.ttf')))
|
pdfmetrics.registerFont(TTFont('OpenSansIt', finders.find('fonts/OpenSans-Italic.ttf')))
|
||||||
pdfmetrics.registerFont(TTFont('OpenSansBd', finders.find('fonts/OpenSans-Bold.ttf')))
|
pdfmetrics.registerFont(TTFont('OpenSansBd', finders.find('fonts/OpenSans-Bold.ttf')))
|
||||||
|
|
||||||
|
def get_doc_template(self):
|
||||||
|
from reportlab.platypus import BaseDocTemplate
|
||||||
|
|
||||||
|
return BaseDocTemplate
|
||||||
|
|
||||||
def create(self, form_data):
|
def create(self, form_data):
|
||||||
from reportlab.platypus import BaseDocTemplate, PageTemplate
|
from reportlab.platypus import PageTemplate
|
||||||
from reportlab.lib.units import mm
|
from reportlab.lib.units import mm
|
||||||
|
|
||||||
with tempfile.NamedTemporaryFile(suffix=".pdf") as f:
|
with tempfile.NamedTemporaryFile(suffix=".pdf") as f:
|
||||||
Report.register_fonts()
|
Report.register_fonts()
|
||||||
doc = BaseDocTemplate(f.name, pagesize=self.pagesize,
|
doc = self.get_doc_template()(f.name, pagesize=self.pagesize,
|
||||||
leftMargin=15 * mm,
|
leftMargin=15 * mm,
|
||||||
rightMargin=15 * mm,
|
rightMargin=15 * mm,
|
||||||
topMargin=20 * mm,
|
topMargin=20 * mm,
|
||||||
bottomMargin=15 * mm)
|
bottomMargin=15 * mm)
|
||||||
doc.addPageTemplates([
|
doc.addPageTemplates([
|
||||||
PageTemplate(id='All', frames=self.get_frames(doc), onPage=self.on_page, pagesize=self.pagesize)
|
PageTemplate(id='All', frames=self.get_frames(doc), onPage=self.on_page, pagesize=self.pagesize)
|
||||||
])
|
])
|
||||||
doc.build(self.get_story(doc, form_data))
|
if self.multiBuild:
|
||||||
|
doc.multiBuild(self.get_story(doc, form_data))
|
||||||
|
else:
|
||||||
|
doc.build(self.get_story(doc, form_data))
|
||||||
f.seek(0)
|
f.seek(0)
|
||||||
return f.read()
|
return f.read()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user