.Net应用程序未使用网络打印机安装任何打印机

时间:2018-08-22 03:50:51

标签: c# printing report reportviewer

.Net应用程序(winform)出现问题。我安装了网络打印机,然后将其选择为默认打印机。

我使用记事本或excel测试,没问题。

但是有时候,我的.net应用会抛出InvalidPrinterException并显示“未安装打印机”。在生产环境中。

当计算机出现此错误(PC1)时,我在与同一台打印机连接的另一台PC(PC2)上运行该应用程序,成功打印了报告,然后在PC1上重新打印,该错误消失了。

重新启动PC时问题也得到解决。

有人可以帮助我吗?

下面是调用堆栈(使用PrinterSettings.PrinterName = null):

System.Drawing.Printing.InvalidPrinterException: No printers are installed.
   at System.Drawing.Printing.PrinterSettings.GetHdevmodeInternal(String printer)
   at System.Drawing.Printing.PrinterSettings.GetHdevmodeInternal()
   at System.Drawing.Printing.PrinterSettings.GetHdevmode()
   at System.Drawing.Printing.PageSettings.get_PaperSource()
   at Microsoft.Reporting.ReportViewerUtils.DeepClonePageSettings(PageSettings pageSettings)

这是我的代码,我正在使用Microsoft ReportViewer:

PageSettings pageSettings = null;

        try
        {
            pageSettings = this.GetPageSettings();

            if (string.IsNullOrWhiteSpace(_NamePrinter))
                pageSettings.PrinterSettings.PrinterName = null;
            else
                pageSettings.PrinterSettings.PrinterName = _NamePrinter;

            pageSettings.Margins = new Margins(_DataSource.PrintInfo.Margin.Left, _DataSource.PrintInfo.Margin.Right, _DataSource.PrintInfo.Margin.Top, _DataSource.PrintInfo.Margin.Bottom);
            pageSettings.PaperSize = new PaperSize("Custom", widthPage, heightPage);
            pageSettings.Landscape = _OrientationPrinter;

            try
            {
                int psize = (int)Enum.Parse(typeof(PaperKind), printInfo.PaperSize);
                pageSettings.PaperSize.RawKind = psize;
            }
            catch
            {
            }

            this.SetPageSettings(pageSettings);
        }
        catch (Exception e)
        {
            LogManager.LogError($"Exception: {e.Message}.\n PageSetting detail: {Newtonsoft.Json.JsonConvert.SerializeObject(pageSettings)}");
            throw;
        }

将在以下行引发异常:this.SetPageSettings(pageSettings);

谢谢, 聘请。

0 个答案:

没有答案
相关问题