2014-04-01 86 views
0

當我運行下面的代碼通過asp.net mvc web應用程序打印到斑馬標籤打印機時,我得到「InvalidPrinterException」。內部消息顯示'沒有安裝打印機'。但是,打印機已安裝並且也設置爲默認打印機。我還打印了一個空白的記事本標籤,並且打印機已成功打印給我。斑馬標籤打印機在mvc 4中的InvalidPrinterException 4 webapplication

請幫忙!

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(); 

         } 
        } 

     } 

回答

0

我懷疑打印機已插入運行Web瀏覽器的客戶端PC,並且驅動程序已安裝在那裏。

C#代碼在服務器端運行,並且無法識別安裝在客戶端上的打印機,因此當您嘗試打印到打印機時,您將收到無效的打印機異常。

如果打印機作爲打印機安裝在服務器上,則運行該應用程序池的帳戶無權訪問該打印機。

在這種情況下,您將需要創建一個服務器/域服務帳戶來運行您的應用程序,並確保它具有訪問權限以查看服務器上安裝的打印機。

處理此問題的最佳方法是生成標籤服務器端,並將其作爲可以隨後查看和打印的文件推送給客戶端。例如,生成標籤的PDF,然後使用安裝在客戶端上的驅動程序將其流式傳輸到客戶端進行打印。

下面的博客鏈接顯示瞭如何使用itextsharp插件生成PDF標籤。

http://zootfroot.blogspot.co.uk/2012/02/using-itextsharp-to-generate-avery.html

+0

這不是一個「鏈接唯一答案」,但它很接近。請考慮將鏈接頁面中的步驟/相關信息添加到您的答案中。 StackOverflow試圖在網站上保留完整的答案,而不是依賴可能受到「鏈接腐爛」影響的第三方網站。 – indivisible