条形码在c#web应用程序中打印

时间:2012-09-06 13:52:06

标签: c# javascript .net barcode

下面的代码我在网页应用程序中使用条形码(斑马条形码打印机)打印。如果我在应用程序服务器中打印我能够打印。

[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是来自应用程序的下拉框中的打印机名称。 在这里,我只能在应用程序服务器中安装打印机名称,打印将转到服务器。

如何获取客户端机器打印机名称并在客户端机器打印机中打印?

1 个答案:

答案 0 :(得分:1)

正如上面@PabloRomeo的评论所指出的那样简短的答案是,你不能以简单的方式做你所描述的。原因是Web浏览器不允许直接访问本地资源,包括打印机。这样做是为了安全起见。话虽如此,如果要访问该站点的计算机将安装一些您需要编写的帮助程序软件,有一些方法可以获得您想要的体验类型。我刚才在类似的问题中提供了一些重要的细节,您可以在下面的链接中看到。

Print barcodes from web page to Zebra printer