I second the
PAR suggestion and related links above.. as for printing, you can probably use
Win32::OLE for a lot (IE, MS Word/Excel/PPT, etc) of the common file types. It can run the target application behind the scenes (no visible window), too..
(hmm--spur of the moment though: maybe you could just use Win32::OLE to control outlook to do all the printing for you)