Biggest change was to the contents dictionary - making it a dictionary of dictionaries (one dictionary per page). That frees the user from having to worry about constructing the page objects and pretty well just concentrate on the content entries as needed.
As to why I stayed with an anti-modular approach, I did have it somewhat broken down and flattened it out. The purpose of the program is really not so much to show to do it from Python as it is to show the structure of PDF. Mostly just so I could muck with the pdf file itself to play with the specs. A text editor for the pdf would be nicer, but pdf is only superficially text.
Then again, maybe there's an emac's extension. :-)