You can use the DOS print command for successfull silent printing. The syntax is
PRINT [/D:(printer name)] [filename with path]
In order to use this command in C# create a batch file in the file system with content as shown below
PRINT /D:%1 %2
%1 and %2 will act as place holders for your command line arguments. In the .net code use Process class as shown below
public void PerformSilentPrinting(string fileName, string printerName)
{
try
{
ProcessStartInfo startInfo = new ProcessStartInfo(fileName);
startInfo.Arguments = string.Format("{0} {1}", printerName, fileName);
//Will execute the batch file with the provided arguments
Process process = Process.Start(startInfo);
//Reads the output
string output = process.StandardOutput.ReadToEnd();
}
catch
{
//Do exception handling
}
}