2013-12-10 4 views
0

Я создаю отчет RDLC и печатаю его из ASP.Net. Когда я пытаюсь это сделать на локальном компьютере, он отлично работает. Но при развертывании на сервере настройки принтера недействительны.Печать отчета RDLC с сервера в C#

// Код

if (m_streams == null || m_streams.Count == 0) 
      throw new Exception("Error: no stream to print."); 

     PrintDocument printDoc = new PrintDocument(); 

     // printDoc.PrinterSettings.PrinterName = "HP LaserJet 3055 PCL5"; 

     if (!printDoc.PrinterSettings.IsValid) 
     { 
      throw new Exception("Error: cannot find the default printer."); 
     } 
     else 
     { 
      printDoc.PrintPage += new PrintPageEventHandler(PrintPage); 
      m_currentPageIndex = 0; 
      printDoc.Print(); 
     } 

Из приведенного выше кода он бросает мне исключение «не удается найти принтер по умолчанию». Пытался добавить имя принтера, которое существует на клиентской машине, но все еще не работает.

Мне нужно распечатать отчет на клиентской машине.

Не знаю, где сменить. Любая помощь?

ответ

0

Я верю, что вы делаете что-то, что вы arent 'должно делать.

Если у вас есть сайт ASP.NET, на котором есть отчет RDLC на сайте. Если я, доступ к этому отчету, я хотел бы напечатать на своей машине, а не на сервере. Вы уверены, что хотите, чтобы сервер распечатывал отчет? Не должен ли клиент/браузер выдавать команду печати?

Если ваш сервер находится в центре обработки данных, и я нахожусь дома, где печать должна быть выполнена? Если вы не хотите печатать на сервере (например, наклейки слияния).

+0

Обновленный вопрос. Нужно печатать на клиентской машине позади кода. Как я могу сделать? – iamCR

+0

Посмотрите и комментарий, который я добавил в ответ Serv. –

0

Насколько я знаю, невозможно получить доступ к настройкам принтера клиента. То, что вы делаете, - это доступ к серверному принтеру, который, если я прав, не установлен.

Вы можете распечатать доступную функциональность браузера/javascript, позвонив window.print() в javascript, потому что браузер работает на стороне клиента и имеет доступ к принтерам. Но доступ к системным ресурсам клиентов напрямую был бы огромным недостатком безопасности.

Может быть, есть малоизвестный обходной путь/хак, но это было бы плохим решением

+0

Теперь мне нужно распечатать его на клиентской машине. Как я могу сделать? от кода позади. – iamCR

+2

Посмотрите, как вы можете печатать на клиенте: http://www.codeproject.com/Tips/569335/Automatically-Printing-an-RDLC-file-in-ASP-NET-MVC –

+0

Да, в конце концов, вплоть до javascript. – Marco

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