All three of those techniques in one way or another represent the same basic technique of "virtual lists". Whereas you gather your data in some form and shove it into a temporary table for either display or export.
Your environment is Perform Script on Server compatible, so I'd suggest writing something that gathers the info and returns it to the user.
Outside of that, the best way to go is dependent on the format you need it in. Webviewers may be cool if you need non-exportable visual reports, otherwise you'll want to look at a virtual temp table to display the information in the standard filemaker table/record/fields format, so you can manipulate it into export formats or PDFs.
It looks like you've already given it some thought though, so let us know if you have any specific technique questions when diving in.