Just to quickly test out the rest of the code, I used LPR. Need to discuss with my manager if we want to stick with that or use Adobe or an open source option.
Byte[] returnRpt = adpRptMon.GetReportBytes(adpRptMon.ReportMonitorData.SysRptLst[0].SysRowID);
if (returnRpt.Length > 0)
{
System.IO.File.WriteAllBytes(@"C:\Temp\report.pdf", returnRpt);
//Print Here
var command = @"%WINDIR%\Sysnative\lpr -S 10.31.45.4 -P ""DD250"" ""C:\Temp\report.pdf""";
ProcessStartInfo procStartInfo = new ProcessStartInfo("cmd", "/C " + command);
procStartInfo.RedirectStandardOutput = true;
procStartInfo.UseShellExecute = false;
procStartInfo.RedirectStandardError = true;
procStartInfo.CreateNoWindow = true;
Process proc = new Process();
proc.StartInfo = procStartInfo;
proc.Start();
proc.WaitForExit();
string cmdError = proc.StandardError.ReadToEnd();
string cmdOutput = proc.StandardOutput.ReadToEnd();
Misc.TraceLog.Write(string.Format("Report size: [{0}].", returnRpt.Length.ToString()));
Misc.TraceLog.Write(string.Format("cmdError: [{0}].", cmdError));
Misc.TraceLog.Write(string.Format("cmdOutput: [{0}].", cmdOutput));
}