C# mvc 4 Web应用程序中的Zebra标签打印机InvalidPrinterException

C# mvc 4 Web应用程序中的Zebra标签打印机InvalidPrinterException,c#,asp.net-mvc-4,printing,C#,Asp.net Mvc 4,Printing,当我运行下面的代码通过asp.net mvc web应用程序打印到zebra标签打印机时,我得到“InvalidPrinterException”。内部消息显示“未安装打印机”。但是,打印机已安装,并且也设置为默认打印机。我还打印了一个空的记事本标签,打印机成功地为我打印了它 请帮忙 private void PrintZebra() { foreach (string c in System.Drawing.Printi

当我运行下面的代码通过asp.net mvc web应用程序打印到zebra标签打印机时,我得到“InvalidPrinterException”。内部消息显示“未安装打印机”。但是,打印机已安装,并且也设置为默认打印机。我还打印了一个空的记事本标签,打印机成功地为我打印了它

请帮忙

private void PrintZebra()
        {

                            foreach (string c in System.Drawing.Printing.PrinterSettings.InstalledPrinters)
                        {
                                 if (c.Contains("ZPL")){

                                    var pageSetngs = new PageSettings();
                                    pageSetngs.Margins = new Margins(0,0,0,0);
                                    var prtrSetngs = new System.Drawing.Printing.PrinterSettings();
                                    prtrSetngs.PrinterName = c;
                                    var pd = new PrintDocument();
                                    pd.PrinterSettings = prtrSetngs;
                                    pd.DocumentName = "test";
                                    pd.OriginAtMargins = false;
                                    pd.DefaultPageSettings = pageSetngs;
                                    pd.PrintPage += (sender, args) =>
                                    {
                                         System.Drawing.Font printFont = new System.Drawing.Font("3 of 9 Barcode", 17);
                                         System.Drawing.Font printFont2 = new System.Drawing.Font("Times New Roman", 9, FontStyle.Bold);
                                         SolidBrush br = new SolidBrush(System.Drawing.Color.Black);
                                         args.Graphics.DrawString("*AAAAAAFFF*",printFont,br,10,65);
                                         args.Graphics.DrawString("*AAAAAAFFF*",printFont2,br,10,85);
                                    };
                                    pd.Print();

                         }
                  }

        }

我怀疑打印机插入了运行web浏览器的客户端PC,并且驱动程序安装在那里

C#代码在服务器端运行,无法查看客户端上安装的打印机,因此在尝试打印时会出现无效打印机异常

如果打印机作为打印机安装在服务器上,则运行应用程序池的帐户无权访问打印机

在这种情况下,您需要创建一个服务器/域服务帐户来运行应用程序,并确保它具有查看服务器上安装的打印机的访问权限

处理此问题的最佳方法是生成标签服务器端并将其作为文件推送到客户端,然后可以查看和打印该文件。例如,生成标签的PDF,然后使用安装在客户机上的驱动程序将其传输到客户机进行打印

下面的博客链接向您展示了如何使用itextsharp插件生成PDF标签

这不是一个“仅链接的答案”,但很接近。请考虑将链接页面中的步骤/相关信息添加到您的答案中。StackOverflow试图在网站本身保留完整的答案,而不是依赖于可能受到“链接腐烂”影响的第三方网站。