Dear Troy,
The only possibility that I know of that remotely aproaches what you are asking for is to wrap all of your transactions in a transaction group, commit the transactions that you need to commit, and then roll back the entire transaction group without committing it.
However, I do not know whether it is possible to launch a call to print within an open transaction group. I suspect not.
Here are two exlanation of transactions, sub-transactions, transaction groups and using transaction groups:
http://thebuildingcoder.typepad.com/blog/2013/04/transactions-sub-transactions-and-transaction-group...
http://thebuildingcoder.typepad.com/blog/2015/02/using-transaction-groups.html
That covers about all that you can achieve in this area programmatically.
If you really have to launch the print command, and that cannot be achieved within your own open transaction group, then I guess you would have to take recourse to the Revit Undo command instead, to roll back the already committed transactions.
I do not know whether the Undo command can be driven programmatically, e.g. using the PostCommand method:
http://thebuildingcoder.typepad.com/blog/about-the-author.html#5.3
If all else fails, how about saving your document before printing it, creating a copy for the complicated printing process you describe, and then reverting back to the original document once that is done?
Please KISS, always and everywhere!
https://en.wikipedia.org/wiki/KISS_principle
Also please let us know how it goes and how you end up solving this.
It sounds like an interesting topic for a more in-depth discussion 🙂
I hope this helps.
Cheers,
Jeremy