From 6a772d840332237676dee9719e0c934840099839 Mon Sep 17 00:00:00 2001 From: Darryl Ross Date: Mon, 22 Aug 2022 20:59:54 +1000 Subject: [PATCH] Support changing page size on a per-page basis --- trml2pdf/doc.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/trml2pdf/doc.py b/trml2pdf/doc.py index c28f1e8..ef500a6 100644 --- a/trml2pdf/doc.py +++ b/trml2pdf/doc.py @@ -103,6 +103,12 @@ def __init__(self, out, node, doc): self.doc = doc pts = node.getElementsByTagName('pageTemplate') for pt in pts: + if not pt.hasAttribute('pageSize'): + pageSize = (utils.unit_get('21cm'), utils.unit_get('29.7cm')) + else: + ps = [x.strip() for x in pt.getAttribute('pageSize').replace(')', '').replace( + '(', '').split(',')] + pageSize = (utils.unit_get(ps[0]), utils.unit_get(ps[1])) frames = [] for frame_el in pt.getElementsByTagName('frame'): frame = platypus.Frame(**(utils.attr_get( @@ -114,10 +120,10 @@ def __init__(self, out, node, doc): if len(gr): drw = canv.RmlDraw(gr[0], self.doc.styles) self.page_templates.append(platypus.PageTemplate( - frames=frames, onPage=drw.render, **utils.attr_get(pt, [], {'id': 'str'}))) + frames=frames, pagesize=pageSize, onPage=drw.render, **utils.attr_get(pt, [], {'id': 'str'}))) else: self.page_templates.append( - platypus.PageTemplate(frames=frames, **utils.attr_get(pt, [], {'id': 'str'}))) + platypus.PageTemplate(frames=frames, pagesize=pageSize, **utils.attr_get(pt, [], {'id': 'str'}))) self.doc_tmpl.addPageTemplates(self.page_templates) def render(self, node_story):