下面的代码我在网页应用程序中使用条形码(斑马条形码打印机)打印。如果我在应用程序服务器中打印我能够打印。
[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 :(得分:1)
正如上面@PabloRomeo的评论所指出的那样简短的答案是,你不能以简单的方式做你所描述的。原因是Web浏览器不允许直接访问本地资源,包括打印机。这样做是为了安全起见。话虽如此,如果要访问该站点的计算机将安装一些您需要编写的帮助程序软件,有一些方法可以获得您想要的体验类型。我刚才在类似的问题中提供了一些重要的细节,您可以在下面的链接中看到。