2012-09-06 40 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