SendBytesToPrinter(szPrinterName, pBytes, dwCount) Ĭall the print method: private void BtnPrint_Click(object sender, System.EventArgs e) Send the converted ANSI string to the printer. PBytes = Marshal.StringToCoTaskMemAnsi(szString) Assume that the printer is expecting ANSI text, and then convert How many characters are in the string? Public static bool SendStringToPrinter( string szPrinterName, string szString )
#Zpl file zebra free#
Free the unmanaged memory that you allocated earlier. Send the unmanaged bytes to the printer.īSuccess = SendBytesToPrinter(szPrinterName, pUnmanagedBytes, nLength) Marshal.Copy(bytes, 0, pUnmanagedBytes, nLength) Copy the managed byte array into the unmanaged array.
Allocate some unmanaged memory for those bytes. Read the contents of the file into the array. Dim an array of bytes big enough to hold the file's contents. Public static bool SendFileToPrinter( string szPrinterName, string szFileName )įileStream fs = new FileStream(szFileName, FileMode.Open) If you did not succeed, GetLastError may give more information If( OpenPrinter( szPrinterName.Normalize(), out hPrinter, IntPtr.Zero ) )īSuccess = WritePrinter(hPrinter, pBytes, dwCount, out dwWritten) Public static bool SendBytesToPrinter( string szPrinterName, IntPtr pBytes, Int32 dwCount)īool bSuccess = false // Assume failure unless you specifically succeed. Returns true on success, false on failure. of bytes, the function sends those bytes to the print queue. When the function is given a printer name and an unmanaged array
Public static extern bool WritePrinter(IntPtr hPrinter, IntPtr pBytes, Int32 dwCount, out Int32 dwWritten ) Public static extern bool EndPagePrinter(IntPtr hPrinter) Public static extern bool StartPagePrinter(IntPtr hPrinter) Public static extern bool EndDocPrinter(IntPtr hPrinter) Public static extern bool StartDocPrinter( IntPtr hPrinter, Int32 level, DOCINFOA di) Public static extern bool ClosePrinter(IntPtr hPrinter) Public static extern bool OpenPrinter( string szPrinter, out IntPtr hPrinter, IntPtr pd)
#Zpl file zebra how to#
This way you will be able to send ZPL to a printer no matter how it is connected ( LPT, USB, Network Share.)Ĭreate the RawPrinterHelper class (from the Microsoft article on How to send raw data to a printer by using Visual C#. Open the filestream to the lpt1 port and send the commandįileStream lpt1 = new FileStream(printer, FileAccess.ReadWrite) Aqui verifico se a impressora é válida SafeFileHandle printer = CreateFile("LPT1:", FileAccess.ReadWrite, 0, IntPtr.Zero, FileMode.Open, 0, IntPtr.Zero) Use the CreateFile external func to connect to the LPT1 port
Uint dwFlagsAndAttributes, IntPtr hTemplateFile) Uint dwShareMode, IntPtr lpSecurityAttributes, FileMode dwCreationDisposition, Static extern SafeFileHandle CreateFile(string lpFileName, FileAccess dwDesiredAccess, Specifically the OP pick this function from the answers to the thread: Take a look at this thread: Print ZPL codes to ZEBRA printer using PrintDocument class.