You may still consider to prepare compressed streams of text parts, it's easy to do.

As one of the last things I add, it will be to compress all page objects.
I still have the following "features" to add before I embed this class into my current app:
1. Column definitions - break a page up into x number of columns each with it's own attributes
2. Pass in a bunch of rows matching up to the columns and have them put on the page with one call
3. Page templates - set up instructions for all the stuff on a page that stays the same...a lot of reports are repeaters
4. Text kerning - heck, I have the KP pairs from the AFM files and might as well see how it works out. Have to check out if Adobe kerns or not
5. Multiline boxes where the class will put as many words on each line as it can and then wrap to the next line and stay in the defined box
6. Some mechanism for keeping track of when a page break is necessary under certain circumstances and do it automatically with some options to repeat section headers that are defined as part of the column(s) definitions.
7. Maybe some of the basic shading and pattern fills.
8. And, in all my "spare" time, read up on embedding fonts and study those API's and data structures.
Looks like a few more weeks already...

Rick