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

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

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


person kubilay bayraktar    schedule 08.05.2013    source источник


Ответы (2)


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

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

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

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

person Scott Willeke    schedule 08.05.2013
comment
Привет, спасибо за ответ. Я уже присваиваю имя принтеру. Но он по-прежнему печатает на принтер по умолчанию. Вот пример, который воспроизводит проблему: hotfile.com/dl/214941957/a8b4362 /PrintingSample.rar.html - person kubilay bayraktar; 09.05.2013
comment
Кстати, я перечислил принтеры с помощью InstalledPrinters и использовал имена, указанные в списке. - person kubilay bayraktar; 09.05.2013

Измените принтер в конструкторе конечных пользователей.

Ответ команды Grapecity:

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

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

            }

благодаря отделу продаж и поддержки Gracecity

person R.Alonso    schedule 02.05.2017