Активные отчеты всегда отправляются на принтер по умолчанию

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

Я не знаю, почему это печать на принтер по умолчанию при использовании активных отчетов.

2 ответа

Установите свойство PrinterName объекта Printer. Что-то вроде следующего:

viewer.Document.Printer.PrinterName = "TheNetworkPrinterName";
viewer.Print();

Значение PrinterName Свойство должно быть точным именем из окон. Чтобы получить список допустимых имен принтеров в данной системе, вы можете перечислить список принтеров, используя PrinterSettings.InstalledPrinters. Пример перечисления доступных принтеров приведен в документации MSDN здесь.

Если вы попробуете что-то и обнаружите, что это не работает, сообщите нам более подробную информацию, и мы постараемся вам помочь.

Замените принтер в конструкторе конечного пользователя.

Grapecityteam ответ:

Для SectionReport вы можете добавить скрипт для смены принтера по умолчанию при загрузке отчета в событии LayoutChanged в Designer, как показано ниже:

private void OnLayoutChanged(object sender, LayoutChangedArgs e)
        {
            if (e.Type == LayoutChangeType.ReportLoad || e.Type == LayoutChangeType.ReportClear)
            {
                reportToolbox.Reorder(reportDesigner);
                reportToolbox.EnsureCategories();
                reportToolbox.Refresh();
                RefreshExportEnabled();
                CreateReportExplorer();
                splitContainerMiddle.Panel2Collapsed = reportDesigner.ReportType == DesignerReportType.Section;

                if (reportDesigner.ReportType == DesignerReportType.Section)
                {
                    string script = string.Empty;
                    script += "public void ActiveReport_ReportStart()";
                    script += "{";
                    script += "rpt.Document.Printer.PrinterSettings.PrinterName = System.Drawing.Printing.PrinterSettings.InstalledPrinters[3];";
                    script += "}";
                    (reportDesigner.Report as SectionReport).ScriptLanguage = "C#";
                    (reportDesigner.Report as SectionReport).Script = script;
                }

            }

благодаря продажам и поддержке Grapecity

Другие вопросы по тегам