Ошибка при печати отчета Crystal с сообщением об исключении «Принтеры не установлены» - PullRequest
0 голосов
/ 12 апреля 2010

Я получил исключение с сообщением «Принтеры не установлены». при распечатке отчета о деплойном выпуске нашего сайта.
Я использую _rptDocument.PrintToPrinter(1, false, 0, 0); для печати отчета.

Я получил это исключение, даже если на моей машине установлено более одного принтера. Кроме того, я не получаю этого исключения во время разработки, все в то время как развитие идет нормально.

Я использовал параметры «Опубликовать веб-сайт» и «Развертывание веб-проекта» для публикации / развертывания веб-сайта, но получил тот же результат.

Есть предложения?

Редактировать

Пример кода

DataSet dsResult = null;
rptDocument = new ReportDocument();
rptDocument.Load(Server.MapPath("WINGR0040.rpt"));

// Fetch report data.
...

rptDocument.SetDataSource(dsResult);

// Print report.
rptDocument.PrintToPrinter(1, false, 0, 0);

Ответы [ 3 ]

0 голосов
/ 11 июня 2010

Я бы действительно экспортировал отчет в PDF, чтобы пользователь печатал на своем настольном принтере. Однако, возможно, служба диспетчера очереди печати остановлена ​​на сервере iis, так что crytsal сбит с толку.

0 голосов
/ 08 июля 2015

Я не нашел способа печати на стороне клиента.

Идет, как работает мне на стороне сервера:

на Page_Load я получил это:

foreach (string printer in System.Drawing.Printing.PrinterSettings.InstalledPrinters)
{
    DropDownList1.Items.Add(printer);
}

Теперь на button_click:

var dsTela = (DataSet)Session["dsTela"];

var cr = new ReportDocument();

var rpt = Request.QueryString["nomeRel"];
cr.Load(Server.MapPath("~/Crystal/" + rpt));

    //----------Crystal Reports---------------//

    // carrega o reltório
cr.SetDataSource(dsTela);

System.Drawing.Printing.PrinterSettings printerSettings = new System.Drawing.Printing.PrinterSettings();

printerSettings.PrinterName = DropDownList1.SelectedValue;

cr.PrintToPrinter(printerSettings, new PageSettings(), false);

// это работает для меня

Если ваш принтер не отображается на стороне сервера, попробуйте следующее:

Источник: (https://support2.microsoft.com/default.aspx?scid=kb;en-us;184291)

Чтобы разрешить IIS перечислять сетевые принтеры с использованием учетной записи SYSTEM, выполните следующие действия.

Примечание. Если процесс выполняется под учетной записью сетевой службы, требуются явные разрешения для вновь созданного реестра.

  1. Убедитесь, что вы вошли в систему на сервере как пользователь, у которого установлены требуемые сетевые принтеры.
  2. Запустите редактор реестра.
  3. Нажмите следующий ключ: HKEY_CURRENT_USER \ Принтеры \ Connections
  4. В меню реестра выберите Экспорт файла реестра.
  5. В поле Имя файла введите c: \ printconns.reg.
  6. Чтобы открыть файл printconns.reg в «Блокноте», нажмите «Пуск», нажмите «Выполнить», введите «Блокнот printconns.reg» в поле «Открыть» и нажмите кнопку «ОК».
  7. Заменить текст HKEY_CURRENT_USER текстом HKEY_USERS.DEFAULT.
  8. Сохраните файл.
  9. Чтобы импортировать файл в реестр, дважды щелкните файл в проводнике Windows.
  10. Перезапустите службу диспетчера очереди печати. ​​
0 голосов
/ 07 июня 2010

Вы добавили принтер на веб-сервер под учетной записью, под которой работает сайт?

Вы пытались сначала установить имя принтера?

Report.PrintOptions.PrinterName = printerName;

Если ваш сайт работает под учетной записью, например, DOMAIN \ WebService, вам необходимо убедиться, что у этой учетной записи пользователя есть принтер по умолчанию.

Вы также можете попробовать установить имя принтера следующим образом:

Report.PrintOptions.PrinterName = this.printDocument1.PrinterSettings.PrinterName;

Получит принтер по умолчанию.

Эта статья может помочь вам в этом.

EDIT:

В этой статье на MSDN описывается, как можно добиться печати с помощью Crystal Reports и ASP.NET. Если вы не реализуете ни одно из этих решений, я не думаю, что вы сможете печатать на стороне клиента.

.cab-файл, указанный в ссылке MSDN , можно найти здесь:

Visual Studio 2005 или же Visual Studio 2008

Без вашего дополнительного кода и более подробной информации о том, как вы генерируете отчет, я не смогу полностью ответить на ваш вопрос.

Спасибо

...