OK, to start with, unless I very much mistake, PrintPage
is raised every time a new page is called for. So all you have to do in the PrintPage
event handler is write stuff for that particular page, not for all the pages at one time.
There shouldn't be any trouble retrieving other data as well as your primary data. The only time that would give trouble would be if your other data expanded the page vertically so that fewer than 25 of your data can be fit on it. But if you know that exactly 25 will fit, every time, this should be fairly easy.
If you're having specific problems, expand your question to state what the problems are, and I'll attempt to answer them.
You might also find this article useful.