2016-03-14 3 views
0

У меня есть приложение, которое записывает отчеты SSRS в формате PDF в каталог файлов, и я хотел бы, чтобы каждый раз, когда в папку был добавлен отчет для печати на конкретном сетевом принтере. Отчеты создаются с использованием веб-службы SQL SSRS.Печать PDF в принтер программно C#

Эта папка и приложение находятся на сервере, и я не могу использовать тиранную печать Adobes для этого. У кого-нибудь есть совет?

Спасибо.

+0

Посмотрите API-интерфейс диспетчера очереди печати Win32. Вам придется использовать платформу invoke для вызова этих родных функций из C#. – RogerN

ответ

0

Понял, что я оставил этот вопрос без ответа и хотел дать последующее описание на случай, если кто-либо еще столкнется с этой проблемой. Я закончил с использованием кода из ответа нашли здесь ...

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(); 
} 

Существует и другая логика здесь и там, но это основная идея, которая выполнит свою работу.

Смежные вопросы