Понял, что я оставил этот вопрос без ответа и хотел дать последующее описание на случай, если кто-либо еще столкнется с этой проблемой. Я закончил с использованием кода из ответа нашли здесь ...
Print a ReportViewer Without Preview
Я был в состоянии создать отчеты с помощью моего веб-службы и поместить их в средстве просмотра отчетов, а затем просто передать отчет и принтер Я хотел напечатать как параметры для кода выше, и он обработал печать для меня. Единственное, что я сделал, это расширить функциональные возможности, чтобы принять имя принтера в качестве параметра и использовать назначение как указанный принтер, который я хотел бы распечатать.
Вот несколько примеров кода, если кто-то хочет увидеть общий поток, который я использовал.
List<ReportParameter> reportparms = new List<ReportParameter>();
ServerReport rpt = new ServerReport();
reportparms.Add(new ReportParameter("param1", param1));
rpt.ReportServerUrl = reportserver;
rpt.ReportPath = myReportPath;
rpt.SetParameters(reportparms);
//I created a class "ReportPrintDocument" for the code from the question linked above.
ReportPrintDocument rdp = new ReportPrintDocument(rpt, myPrinter);
rdp.PrinterSettings.PrinterName = ps.Printer;
if (p.PrinterSettings.IsValid)
{
rdp.Print();
}
Существует и другая логика здесь и там, но это основная идея, которая выполнит свою работу.
Посмотрите API-интерфейс диспетчера очереди печати Win32. Вам придется использовать платформу invoke для вызова этих родных функций из C#. – RogerN