Skip to content

Commit

Permalink
Add capability to use mergePage in pageTemplate.
Browse files Browse the repository at this point in the history
  • Loading branch information
strichter committed Jul 24, 2014
1 parent 4fac06d commit 80d7fa4
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 1 deletion.
19 changes: 19 additions & 0 deletions src/z3c/rml/page.py
Expand Up @@ -86,3 +86,22 @@ def process(self):
proc = self.getProcessor()
pageOperations = proc.operations.setdefault(outPage, [])
pageOperations.append((inputFile, inPage))


class MergePageInPageTemplate(MergePage):

def process(self):
if PyPDF2 is None:
raise Exception(
'pyPdf is not installed, so this feature is not available.')
inputFile, inPage = self.getAttributeValues(valuesOnly=True)

onPage = self.parent.pt.onPage
def drawOnCanvas(canvas, doc):
onPage(canvas, doc)
outPage = canvas.getPageNumber()-1
proc = self.getProcessor()
pageOperations = proc.operations.setdefault(outPage, [])
pageOperations.append((inputFile, inPage))

self.parent.pt.onPage = drawOnCanvas
6 changes: 5 additions & 1 deletion src/z3c/rml/template.py
Expand Up @@ -16,7 +16,7 @@
import zope.interface
from reportlab import platypus
from z3c.rml import attr, directive, interfaces, occurence
from z3c.rml import canvas, flowable, stylesheet
from z3c.rml import canvas, flowable, page, stylesheet


class IStory(flowable.IFlow):
Expand Down Expand Up @@ -136,7 +136,9 @@ class PageGraphics(directive.RMLDirective):
signature = IPageGraphics

def process(self):
onPage = self.parent.pt.onPage
def drawOnCanvas(canv, doc):
onPage(canv, doc)
canv.saveState()
self.canvas = canv
drawing = canvas.Drawing(self.element, self)
Expand All @@ -151,6 +153,7 @@ class IPageTemplate(interfaces.IRMLDirectiveSignature):
occurence.containing(
occurence.OneOrMore('frame', IFrame),
occurence.ZeroOrOne('pageGraphics', IPageGraphics),
occurence.ZeroOrOne('mergePage', page.IMergePage),
)

id = attr.Text(
Expand All @@ -176,6 +179,7 @@ class PageTemplate(directive.RMLDirective):
factories = {
'frame': Frame,
'pageGraphics': PageGraphics,
'mergePage': page.MergePageInPageTemplate,
}

def process(self):
Expand Down

0 comments on commit 80d7fa4

Please sign in to comment.