class NumberedCanvas(canvas.Canvas):
def __init__(self, *args, **kwargs):
canvas.Canvas.__init__(self, *args, **kwargs)
- self._codes = []
- self._flag=False
- self._pageCount=0
- self._currentPage =0
- self._pageCounter=0
- self.pages={}
+ self._saved_page_states = []
def showPage(self):
- self._currentPage +=1
- if not self._flag:
- self._pageCount += 1
- else:
- self.pages.update({self._currentPage:self._pageCount})
- self._codes.append({'code': self._code, 'stack': self._codeStack})
+ self._saved_page_states.append(dict(self.__dict__))
self._startPage()
- self._flag=False
-
- def pageCount(self):
- if self.pages.get(self._pageCounter,False):
- self._pageNumber=0
- self._pageCounter +=1
- key=self._pageCounter
- if not self.pages.get(key,False):
- while not self.pages.get(key,False):
- key += 1
+
+ def save(self):
+ """add page info to each page (page x of y)"""
- num_pages = len(self._saved_page_states)
+ for state in self._saved_page_states:
+ self.__dict__.update(state)
- self.draw_page_number(num_pages)
++ self.draw_page_number()
+ canvas.Canvas.showPage(self)
+ canvas.Canvas.save(self)
+
- def draw_page_number(self, page_count):
++ def draw_page_number(self):
++ page_count = len(self._saved_page_states)
+ self.setFont("Helvetica", 8)
self.drawRightString((self._pagesize[0]-30), (self._pagesize[1]-40),
" %(this)i / %(total)i" % {
- 'this': self._pageNumber,
+ 'this': self._pageNumber+1,
- 'total': self.pages.get(key,False),
+ 'total': page_count,
}
)