TechSapphire Saturday, 2024-04-27, 5:22 AM
Site menu
Login form
News
Play Games
  • Deep Freeze
  • Ice Slide
  • Gyroball
  • Fat Fish
  • Bush Royal Rampage
  • Step 1: To fix this issue Create one more class file with name RawPrinterHelper.cs with below definition (Download):

     

    using Microsoft.VisualBasic;
    using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.Data;
    using System.Diagnostics;
    using System.IO;
    using System.Linq;
    using System.Runtime.InteropServices;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace POSPrintExample {
     public class RawPrinterHelper {
     // Structure and API declarions:
     [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
     public class DOCINFOA {
     [MarshalAs(UnmanagedType.LPStr)]
     public string pDocName;
     [MarshalAs(UnmanagedType.LPStr)]
     public string pOutputFile;
     [MarshalAs(UnmanagedType.LPStr)]
     public string pDataType;
     }
     [DllImport("winspool.Drv", EntryPoint = "OpenPrinterA", SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
     public static extern bool OpenPrinter([MarshalAs(UnmanagedType.LPStr)] string szPrinter, ref IntPtr hPrinter, IntPtr pd);
    
     [DllImport("winspool.Drv", EntryPoint = "ClosePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
     public static extern bool ClosePrinter(IntPtr hPrinter);
    
     [DllImport("winspool.Drv", EntryPoint = "StartDocPrinterA", SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
     public static extern bool StartDocPrinter(IntPtr hPrinter, Int32 level, [In(), MarshalAs(UnmanagedType.LPStruct)] DOCINFOA di);
    
     [DllImport("winspool.Drv", EntryPoint = "EndDocPrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
     public static extern bool EndDocPrinter(IntPtr hPrinter);
    
     [DllImport("winspool.Drv", EntryPoint = "StartPagePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
     public static extern bool StartPagePrinter(IntPtr hPrinter);
    
     [DllImport("winspool.Drv", EntryPoint = "EndPagePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
     public static extern bool EndPagePrinter(IntPtr hPrinter);
    
     [DllImport("winspool.Drv", EntryPoint = "WritePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
     public static extern bool WritePrinter(IntPtr hPrinter, IntPtr pBytes, Int32 dwCount, ref Int32 dwWritten);
    
     // SendBytesToPrinter()
     // When the function is given a printer name and an unmanaged array
     // of bytes, the function sends those bytes to the print queue.
     // Returns true on success, false on failure.
     public static bool SendBytesToPrinter(string szPrinterName, IntPtr pBytes, Int32 dwCount) {
     Int32 dwError = 0;
     Int32 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(), ref 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, ref 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;
     }
    
     public static bool SendFileToPrinter(string szPrinterName, string szFileName) {
     // Open the file.
     FileStream fs = new FileStream(szFileName, FileMode.Open);
     // Create a BinaryReader on the file.
     BinaryReader br = new BinaryReader(fs);
     new Byte[fs.Length];
     bool bSuccess = false;
     // Your unmanaged pointer.��3 IntPD���_J�magedBytes = new IntPtr(0);
     int nLength = 0;
    
     nLength = Convert.ToInt32(fs.Length);
     // R1hd the contents of the file into the array.
    ���bytQ��9 br.ReadBytes(nLength);
     // Allocate some unmanaged memory for those bytes.
     pUnmanagedBytes = Marshal.AllocCoTaskMem(nLength);
     // Copy the managed byte array into the unmanaged array.
     Marshal.Copy(bytes, 0, pUnmanagedBytes, nLength);
     // Send the unmanaged bytes to the printer.
     bSuccess = SendBytesToPrinter(szPrinterName, pUnmanagedBytes, nLength);
     // Free the unmanaged memory that you allocated earlier.
     Marshal.FreeCoTaskMem(pUnmanagedBytes);
     return bSuccess;
     }
     public static bool SendStringToPrinter(string szPrinterName, string szString) {
     IntPtr pBytes =
     default (IntPtr);
     Int32 dwCount =
     default (Int32);
     // How many characters are in the string?
     dwCount = szString.Length;
     // Assume that the printer is expecting ANSI text, and then convert
     // the string to ANSI text.
     pBytes = Marshal.StringToCoTaskMemAnsi(szString);
     // Send the converted ANSI string to the printer.
     SendBytesToPrinter(szPrinterName, pBytes, dwCount);
     Marshal.FreeCoTaskMem(pBytes);
     return true;
     }
     }
    }
    
    

    Step 2: Use below code for printing:

     if (File.Exists(".\\tmpPrint.print"))
                    File.Delete(".\\tmpPrint.print");
                File.WriteAllBytes(".\\tmpPrint.print", BytesValue);
                RawPrinterHelper.SendFileToPrinter("POS1", ".\\tmpPrint.print");
                try
                {
                    File.Delete(".\\tmpPrint.print");
                }
                catch
                {

                }

    Categories
    Programming [27]
    Tips for programming
    Security [2]
    Security Tips
    Google [1]
    Use google faster then ever you use
    Project [14]
    HTML [2]
    Electronics [0]
    Data Structure [0]
    Database [16]
    SQL SERVER
    SSRS [1]
    Sql Server Reporting Services
    Copyright MyCorp © 2024