I've never tried it, but theoretically you could write a .PRG file that would do this. Open up the project file as a table (USE myproj.pjx) and iterate through it, opening each file and processing it depending on its type.
The only real problem I can see is how you would print a visual representation of forms and reports. If that's not important, the methods and properties of all the controls in a form can be pulled out of the memo fields in the form.scx table.
I don't know if anyone has done something like this before, but it seems to me it would be fairly easy to do.