2012-09-06 82 views
0

下面的代碼是用於條形碼(斑馬條碼打印機)打印的web應用程序。如果我在應用程序服務器中打印,我可以打印。c#web應用程序中的條碼打印

[DllImport("winspool.Drv", EntryPoint = "WritePrinter", SetLastError = true,           ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]   
public static extern bool WritePrinter(IntPtr hPrinter, IntPtr pBytes, Int32 dwCount,  out Int32 dwWritten); 

public static bool SendBytesToPrinter(string szPrinterName, IntPtr pBytes, Int32 dwCount) 
{ 
    Int32 dwError = 0, dwWritten = 0; 
    IntPtr hPrinter = new IntPtr(0); 
    DOCINFOA di = new DOCINFOA(); 
    bool bSuccess = false; // Assume failure unless you specifically succeed. 

    //di.pDocName = "My C#.NET RAW Document"; 
    //di.pDataType = "RAW"; 

    // Open the printer. 
    if (OpenPrinter(szPrinterName.Normalize(), out hPrinter, IntPtr.Zero)) 
    { 
     // Start a document. 
     if (StartDocPrinter(hPrinter, 1, di)) 
     { 
      // Start a page. 
      if (StartPagePrinter(hPrinter)) 

      { 
       // Write your bytes. 
       bSuccess = WritePrinter(hPrinter, pBytes, dwCount, out dwWritten); 
       EndPagePrinter(hPrinter); 
      } 
      EndDocPrinter(hPrinter); 

     } 
     ClosePrinter(hPrinter); 
    } 
    // If you did not succeed, GetLastError may give more information 
    // about why not. 
    if (bSuccess == false) 
    { 
     dwError = Marshal.GetLastWin32Error(); 
    } 
    return bSuccess; 
} 

這裏szPrinterName是從應用程序下拉框中打印機名稱。 這裏我能夠僅將應用服務器中安裝的打印機名稱打印出來並打印到服務器。

我如何在客戶機打印機客戶機的打印機名稱和打印?

+0

編輯使問題更突出。 – Alex

+4

這就是ASP.NET?您無法從服務器訪問客戶端硬件。 –

+0

@PabloRomeo:如何才能使它在客戶端機器上可行?是否有任何JavaScript代碼的打印(使用打印機dialoge盒出) – bharath

回答

1

簡而言之,正如在上面的@PabloRomeo評論中指出的那樣,你不能以簡單的方式來描述你所描述的內容。原因是Web瀏覽器不允許直接訪問本地資源,包括打印機。這是出於安全目的而完成的。這樣說,如果要訪問該網站的計算機將安裝一些您需要編寫的幫助程序軟件,您可以通過一些方法獲得所需的體驗類型。我剛纔在一個類似的問題中提供了一些關於這方面的重要細節,您可以在下面的鏈接中看到。

Print barcodes from web page to Zebra printer