Even with pdftk, use PyPDF to read page size

This commit is contained in:
Raphael Michel
2018-11-27 09:22:53 +01:00
parent 180a26ee1d
commit 631307a4d5

View File

@@ -226,11 +226,12 @@ class Renderer:
self.layout = layout self.layout = layout
self.background_file = background_file self.background_file = background_file
self.variables = get_variables(event) self.variables = get_variables(event)
if not settings.PDFTK: if self.background_file:
if self.background_file: self.bg_bytes = self.background_file.read()
self.bg_pdf = PdfFileReader(BytesIO(self.background_file.read()), strict=False) self.bg_pdf = PdfFileReader(BytesIO(self.bg_bytes), strict=False)
else: else:
self.bg_pdf = None self.bg_bytes = None
self.bg_pdf = None
@classmethod @classmethod
def _register_fonts(cls): def _register_fonts(cls):
@@ -342,6 +343,8 @@ class Renderer:
self._draw_textarea(canvas, op, order, o) self._draw_textarea(canvas, op, order, o)
elif o['type'] == "poweredby": elif o['type'] == "poweredby":
self._draw_poweredby(canvas, op, o) self._draw_poweredby(canvas, op, o)
if self.bg_pdf:
canvas.setPageSize((self.bg_pdf.getPage(0).mediaBox[2], self.bg_pdf.getPage(0).mediaBox[3]))
canvas.showPage() canvas.showPage()
def render_background(self, buffer, title=_('Ticket')): def render_background(self, buffer, title=_('Ticket')):
@@ -349,13 +352,13 @@ class Renderer:
buffer.seek(0) buffer.seek(0)
with tempfile.TemporaryDirectory() as d: with tempfile.TemporaryDirectory() as d:
with open(os.path.join(d, 'back.pdf'), 'wb') as f: with open(os.path.join(d, 'back.pdf'), 'wb') as f:
f.write(self.background_file.read()) f.write(self.bg_bytes)
with open(os.path.join(d, 'front.pdf'), 'wb') as f: with open(os.path.join(d, 'front.pdf'), 'wb') as f:
f.write(buffer.read()) f.write(buffer.read())
subprocess.run([ subprocess.run([
settings.PDFTK, settings.PDFTK,
os.path.join(d, 'front.pdf'), os.path.join(d, 'front.pdf'),
'multistamp', 'background',
os.path.join(d, 'back.pdf'), os.path.join(d, 'back.pdf'),
'output', 'output',
os.path.join(d, 'out.pdf'), os.path.join(d, 'out.pdf'),