To 'silently' print from a Windows Service you should utilise Win32 GDI API.
If you are developing a Microsoft .NET application, you can use Platform Invocation Services (PInvoke) to call the Win32 GDI APIs to print. Heres a nice PInvoke tutorial. Take a look here for Win32 GDI methods etc.
Here is more information and an example regarding printing from a windows service from Microsoft's DSUI team... take a look