1 Index: template2pdf/t2p/trml2pdf.py
2 ===================================================================
3 --- template2pdf/t2p/trml2pdf.py (revision 66)
4 +++ template2pdf/t2p/trml2pdf.py (revision 67)
7 from reportlab.pdfgen import canvas
8 from reportlab import platypus
11 from reportlab.graphics.barcode.common import Codabar, Code11, I2of5, MSI
12 from reportlab.graphics.barcode.code128 import Code128
14 def _child_get(node, childs):
17 - return filter(lambda n: ((n.nodeType==n.ELEMENT_NODE) and (n.localName==childs)),
20 + lambda n: ((n.nodeType==n.ELEMENT_NODE) and (n.localName==childs)),
24 class _rml_styles(object):
27 self.canvas = canvas.Canvas(out)
28 pd = self.dom.documentElement.getElementsByTagName('pageDrawing')[0]
29 - pd_obj = _rml_canvas(self.canvas, None, self)
30 + pd_obj = _rml_canvas(self.canvas, doc_tmpl=None, doc=self)
32 self.canvas.showPage()
36 def _image(self, node):
37 img, args = self.doc.image_resolver(node)
38 - self.canvas.drawImage(img, **args)
39 + x = args.pop('x', 0)
40 + y = args.pop('y', 0)
41 + self.canvas.drawImage(img, x, y, **args)
43 def _path(self, node):
44 self.path = self.canvas.beginPath()
47 def render(self, canvas, doc):
49 - cnv = _rml_canvas(canvas, doc, self.styles)
50 + cnv = _rml_canvas(canvas, None, doc)
56 def _illustration(self, node):
57 class Illustration(platypus.flowables.Flowable):
58 - def __init__(self, node, styles):
59 + def __init__(self, node, styles, parent):
60 + self.parent = parent
63 self.width = utils.as_pt(node.getAttribute('width'))
67 drw = _rml_draw(self.node, self.styles)
68 - drw.render(self.canv, None)
69 - return Illustration(node, self.styles)
70 + drw.render(self.canv, self.parent.doc)
71 + return Illustration(node, self.styles, self)
73 def _flowable(self, node):
74 if node.localName=='para':
76 frames.append( frame )
77 gr = pt.getElementsByTagName('pageGraphics')
79 - drw = _rml_draw(gr[0], self.doc)
80 + drw = _rml_draw(gr[0], self.styles)
81 self.page_templates.append(
82 platypus.PageTemplate(frames=frames, onPage=drw.render,
83 **utils.getAttrsAsDict(pt, [], {'id': 'str'})))
85 fis = r.render(node_story)
86 self.doc_tmpl.build(fis)
89 def parseString(data, fout=None):
98 print 'Usage: trml2pdf input.rml >output.pdf'
99 print 'Render the standard input (RML) and output a PDF file'