Re: TOC and page x of y canvas
Robin Becker <[email protected]>
| Newsgroups | gmane.comp.python.reportlab.user |
|---|---|
| Message-ID | <[email protected]> |
On 09/11/2015 20:35, brian wrote: > Does anyone know the answer to this question: > http://stackoverflow.com/questions/16041397/python-reportlab-clickable-toc-with-x-of-y-page-numbering > > > I'm doing a similar thing and when I create the TOC with a numbered canvas the > links don't work. If I remove the numbered canvas, the links work. I'd like to > not have to roll my own TOC solution. > > Brian Perhaps you could post some code, and please not like the link above which doesn't work without considerable editing and guessing. The attempt is being made there to defer page building until the end which is a bit daft. Do not use the numbered canvas it is wholly problematic/idiotic. It might be possible to defer all page writing until the very end, but Canvas and everything else wasn't written with that intention so it's almost certainly not a good idea. Anyhoo if I do make the code work as intended the links are clickable, but I still don't like the idea of using the NumberedCanvas. So far as I can understand it there is/are two possible reasons to use the NumberedCanvas. We need to find the total number of pages and possibly we need to avoid having multiple passes. Well if we don't know the number of Toc entries up front we cannot avoid multiple passes because of a variable number of TOC pages. If we know the TOC will fit on n pages then it is possible to do both TOC & page x of y with one pass. So 1) we assume a for "y" the total number of pages and 2) we assume form(s) for the whole TOC. If that solution won't do then you are probably back to doing multi-build anyway and that easily allows for variable length TOC and for collection of the number of pages at the end of the story. Three passes will suffice. -- Robin Becker