summarylogtreecommitdiffstats
path: root/image_resolver.patch
blob: 671c98c00fcbe69a2ff6640c0efa9aa744e686e2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
Index: template2pdf/t2p/trml2pdf.py
===================================================================
--- template2pdf/t2p/trml2pdf.py	(revision 66)
+++ template2pdf/t2p/trml2pdf.py	(revision 67)
@@ -28,6 +28,7 @@
 import reportlab
 from reportlab.pdfgen import canvas
 from reportlab import platypus
+
 try:
     from reportlab.graphics.barcode.common import Codabar, Code11, I2of5, MSI
     from reportlab.graphics.barcode.code128 import Code128
@@ -54,8 +55,9 @@
 def _child_get(node, childs):
     """Filter child nodes
     """
-    return filter(lambda n: ((n.nodeType==n.ELEMENT_NODE) and (n.localName==childs)),
-                  node.childNodes)
+    return filter(
+        lambda n: ((n.nodeType==n.ELEMENT_NODE) and (n.localName==childs)),
+        node.childNodes)
 
 
 class _rml_styles(object):
@@ -262,7 +264,7 @@
         else:
             self.canvas = canvas.Canvas(out)
             pd = self.dom.documentElement.getElementsByTagName('pageDrawing')[0]
-            pd_obj = _rml_canvas(self.canvas, None, self)
+            pd_obj = _rml_canvas(self.canvas, doc_tmpl=None, doc=self)
             pd_obj.render(pd)
             self.canvas.showPage()
             self.canvas.save()
@@ -387,7 +389,9 @@
 
     def _image(self, node):
         img, args = self.doc.image_resolver(node)
-        self.canvas.drawImage(img, **args)
+        x = args.pop('x', 0)
+        y = args.pop('y', 0)
+        self.canvas.drawImage(img, x, y, **args)
 
     def _path(self, node):
         self.path = self.canvas.beginPath()
@@ -455,7 +459,7 @@
 
     def render(self, canvas, doc):
         canvas.saveState()
-        cnv = _rml_canvas(canvas, doc, self.styles)
+        cnv = _rml_canvas(canvas, None, doc)
         cnv.render(self.node)
         canvas.restoreState()
 
@@ -525,7 +529,8 @@
 
     def _illustration(self, node):
         class Illustration(platypus.flowables.Flowable):
-            def __init__(self, node, styles):
+            def __init__(self, node, styles, parent):
+                self.parent = parent
                 self.node = node
                 self.styles = styles
                 self.width = utils.as_pt(node.getAttribute('width'))
@@ -535,8 +540,8 @@
             def draw(self):
                 canvas = self.canv
                 drw = _rml_draw(self.node, self.styles)
-                drw.render(self.canv, None)
-        return Illustration(node, self.styles)
+                drw.render(self.canv, self.parent.doc)
+        return Illustration(node, self.styles, self)
 
     def _flowable(self, node):
         if node.localName=='para':
@@ -661,7 +666,7 @@
                 frames.append( frame )
             gr = pt.getElementsByTagName('pageGraphics')
             if len(gr):
-                drw = _rml_draw(gr[0], self.doc)
+                drw = _rml_draw(gr[0], self.styles)
                 self.page_templates.append(
                     platypus.PageTemplate(frames=frames, onPage=drw.render,
                                           **utils.getAttrsAsDict(pt, [], {'id': 'str'})))
@@ -676,6 +681,7 @@
         fis = r.render(node_story)
         self.doc_tmpl.build(fis)
 
+
 def parseString(data, fout=None):
     r = _rml_doc(data)
     if fout:
@@ -688,6 +694,7 @@
         r.render(fp)
         return fp.getvalue()
 
+
 def trml2pdf_help():
     print 'Usage: trml2pdf input.rml >output.pdf'
     print 'Render the standard input (RML) and output a PDF file'