You can do this with a bit of scripting and the use of a "robot file".
The remote user runs a script that creates a record in a "print request" table. The data in this table must be sufficient for another script to completely reproduce all details needed for the printed report. That might be the primary key of a single record, a list of such values or even the search criteria used to produce it. You might need the name or number of a layout as well--it just depends one whether you need this for a single type of output or many different types of reports. You also need a field to show whether or not the request was used print the report yet or not.
You then set up a client of the database with a robot file that just loops or uses InstallOnTimer Script to run at periodic intervals. Each time, it does a find on this request table to find all requests that have not yet been printed and then process/prints each in turn.
Thanks. That would automate what I've been doing throughout the day. We have a field that gets marked "yes" when an invoice gets printed so I've been checking a few times during the day and printing them. Or they send me a message that they've created a record and I print it then.