public static bool SendBytesToPrinter(string szPrinterName, String pBytes, Int32 dwCount) { Int32 dwError = 0, dwWritten = 0; IntPtr hPrinter = new IntPtr(); DOCINFO di = new DOCINFO(); bool bSuccess = false; // Assume failure unless you specifically succeed. di.pDocName = "My C#.NET RAW Document"; di.pDataType = "RAW"; // Open the printer. if (PrintDirect.OpenPrinter(szPrinterName, ref hPrinter, 0)) { // Start a document. if (PrintDirect.StartDocPrinter(hPrinter, 1, ref di)) { // Start a page. if (PrintDirect.StartPagePrinter(hPrinter)) { // Write your bytes. bSuccess = PrintDirect.WritePrinter(hPrinter, pBytes, dwCount, ref dwWritten); PrintDirect.EndPagePrinter(hPrinter); } PrintDirect.EndDocPrinter(hPrinter); } PrintDirect.ClosePrinter(hPrinter); } // If you did not succeed, GetLastError may give more information // about why not. if (bSuccess == false) { dwError = Marshal.GetLastWin32Error(); } return bSuccess; }
private void button2_Click(object sender, EventArgs e) { System.IntPtr lhPrinter = new System.IntPtr(); DOCINFO di = new DOCINFO(); int pcWritten = 0; string st1; // text to print with a form feed character st1 = "This is an example of printing directly to a printer\f"; di.pDocName = "my test document"; di.pDataType = "RAW"; // the \x1b means an ascii escape character st1 = "\x1b*c600a6b0P\f"; //lhPrinter contains the handle for the printer opened //If lhPrinter is 0 then an error has occured PrintDirect.OpenPrinter("EPSON LQ-300+ ESC/P 2", ref lhPrinter, 0); PrintDirect.StartDocPrinter(lhPrinter, 1, ref di); PrintDirect.StartPagePrinter(lhPrinter); try { // Moves the cursor 900 dots (3 inches at 300 dpi) in from the left margin, and // 600 dots (2 inches at 300 dpi) down from the top margin. st1 = "\x1b*p900x600Y"; PrintDirect.WritePrinter(lhPrinter, st1, st1.Length, ref pcWritten); // Using the print model commands for rectangle dimensions, "600a" specifies a rectangle // with a horizontal size or width of 600 dots, and "6b" specifies a vertical // size or height of 6 dots. The 0P selects the solid black rectangular area fill. st1 = "\x1b*c600a6b0P"; PrintDirect.WritePrinter(lhPrinter, st1, st1.Length, ref pcWritten); // Specifies a rectangle with width of 6 dots, height of 600 dots, and a // fill pattern of solid black. st1 = "\x1b*c6a600b0P"; PrintDirect.WritePrinter(lhPrinter, st1, st1.Length, ref pcWritten); // Moves the current cursor position to 900 dots, from the left margin and // 1200 dots down from the top margin. st1 = "\x1b*p900x1200Y"; PrintDirect.WritePrinter(lhPrinter, st1, st1.Length, ref pcWritten); // Specifies a rectangle with a width of 606 dots, a height of 6 dots and a // fill pattern of solid black. st1 = "\x1b*c606a6b0P"; PrintDirect.WritePrinter(lhPrinter, st1, st1.Length, ref pcWritten); // Moves the current cursor position to 1500 dots from the left margin and // 600 dots down from the top margin. st1 = "\x1b*p1500x600Y"; PrintDirect.WritePrinter(lhPrinter, st1, st1.Length, ref pcWritten); // Specifies a rectangle with a width of 6 dots, a height of 600 dots and a // fill pattern of solid black. st1 = "\x1b*c6a600b0P"; PrintDirect.WritePrinter(lhPrinter, st1, st1.Length, ref pcWritten); // Send a form feed character to the printer st1 = "\f"; PrintDirect.WritePrinter(lhPrinter, st1, st1.Length, ref pcWritten); } catch (Exception ex) { Console.WriteLine(ex.Message); } PrintDirect.EndPagePrinter(lhPrinter); PrintDirect.EndDocPrinter(lhPrinter); PrintDirect.ClosePrinter(lhPrinter); }
public void Print(string rawdata, string printer_name) { IntPtr hPrinter = IntPtr.Zero; int pcWritten = 0; DOCINFO di = new DOCINFO(); di.pDataType = "RAW"; di.pDocName = "AIMS"; OpenPrinter(printer_name, ref hPrinter, 0); if (hPrinter == IntPtr.Zero) { return; } try { StartDocPrinter(hPrinter, 1, ref di); StartPagePrinter(hPrinter); WritePrinter(hPrinter, rawdata, rawdata.Length, ref pcWritten); EndPagePrinter(hPrinter); EndDocPrinter(hPrinter); } finally { ClosePrinter(hPrinter); } }
// 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. /// <summary> /// 将字节发送给指定的打印机进行打印。 /// </summary> /// <param name="szPrinterName">打印机名称。</param> /// <param name="pBytes">指向字节的指针。</param> /// <param name="dwCount">字节数量。</param> /// <returns>是否打印成功,true:成功。false:失败。</returns> public static bool SendBytesToPrinter(string szPrinterName, IntPtr pBytes, Int32 dwCount) { Int32 dwError = 0, dwWritten = 0; IntPtr hPrinter = new IntPtr(0); DOCINFO di = new DOCINFO(); bool bSuccess = false; // Assume failure unless you specifically succeed. di.pDocName = "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); }
internal static bool StartDoc(GraphicsPrinter gr, string doc_name, string output_file) { DOCINFO doc = (DOCINFO)doc_info[gr.Hdc]; doc.title = doc_name; return(true); }
//UPGRADE_WARNING: Structure DOCINFO may require marshalling attributes to be passed as an argument in this Declare statement. Click for more: 'ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword="C429C3A5-5D47-4CD9-8F51-74A1616405DC"' //UPGRADE_ISSUE: Declaring a parameter 'As Any' is not supported. Click for more: 'ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword="FAE78A8D-8978-4FD4-8208-5B7324A8F795"' // ERROR: Not supported in C#: DeclareDeclaration // ERROR: Not supported in C#: DeclareDeclaration // ERROR: Not supported in C#: DeclareDeclaration // ERROR: Not supported in C#: DeclareDeclaration // ERROR: Not supported in C#: DeclareDeclaration // ERROR: Not supported in C#: DeclareDeclaration // ERROR: Not supported in C#: DeclareDeclaration public void PrintDirect(string printerDeviceName, string dataToPrint) { int lhPrinter = 0; int lReturn = 0; int lpcWritten = 0; int lDoc = 0; DOCINFO MyDocInfo = default(DOCINFO); // Accodamento di un carattere di carriage return, altrimenti non stampa dataToPrint = dataToPrint + Environment.NewLine; //lReturn = OpenPrinter(printerDeviceName, ref lhPrinter, 0); if (lReturn == 0) { //Interaction.MsgBox("The Printer Name you typed wasn't recognized."); return; } MyDocInfo.pDocName = "PrintUSB"; MyDocInfo.pOutputFile = ""; MyDocInfo.pDatatype = ""; //lDoc = StartDocPrinter(lhPrinter, 1, ref MyDocInfo); //StartPagePrinter(lhPrinter); //lReturn = WritePrinter(lhPrinter, ref dataToPrint, Strings.Len(dataToPrint), ref lpcWritten); //lReturn = EndPagePrinter(lhPrinter); //lReturn = EndDocPrinter(lhPrinter); //lReturn = ClosePrinter(lhPrinter); }
static void Main() { string printerAddress = "PrintDemon"; string base64 = "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AAAAAAgqAAAAAAAAAAAAAAAAAABoKQAAAAAAAAAAAAAAAAAA3CsAAAAAAAAAAAAAAAAAAMorAAAAAAAAAAAAAAAAAADCKwAAAAAAAAAAAAAAAAAAACsAAAAAAAAUKwAAAAAAACArAAAAAAAAOCsAAAAAAABCKwAAAAAAAEwrAAAAAAAAZCsAAAAAAAD2KgAAAAAAAMIqAAAAAAAAtCoAAAAAAACmKgAAAAAAAOYqAAAAAAAA1CoAAAAAAADuKgAAAAAAAAAAAAAAAAAAtwFTaGVsbEV4ZWN1dGVXAFNIRUxMMzIuZGxsAFAEUXVlcnlQZXJmb3JtYW5jZUNvdW50ZXIAHgJHZXRDdXJyZW50UHJvY2Vzc0lkACICR2V0Q3VycmVudFRocmVhZElkAADwAkdldFN5c3RlbVRpbWVBc0ZpbGVUaW1lAA4DR2V0VGlja0NvdW50AADTBFJ0bENhcHR1cmVDb250ZXh0ANoEUnRsTG9va3VwRnVuY3Rpb25FbnRyeQAA4QRSdGxWaXJ0dWFsVW53aW5kAAC8BVVuaGFuZGxlZEV4Y2VwdGlvbkZpbHRlcgAAewVTZXRVbmhhbmRsZWRFeGNlcHRpb25GaWx0ZXIAHQJHZXRDdXJyZW50UHJvY2VzcwCaBVRlcm1pbmF0ZVByb2Nlc3MAAEtFUk5FTDMyLmRsbAAAVQBfWGNwdEZpbHRlcgCuAF9hbXNnX2V4aXQAAJ0AX193Z2V0bWFpbmFyZ3MAAI4AX19zZXRfYXBwX3R5cGUAADIEZXhpdAAADgFfZXhpdADBAF9jZXhpdAAAkABfX3NldHVzZXJtYXRoZXJyAAB9AV9pbml0dGVybQBXAF9fQ19zcGVjaWZpY19oYW5kbGVyAACCA193Y21kbG4AJwFfZm1vZGUAANIAX2NvbW1vZGUAAG1zdmNydC5kbGwAAC8AP3Rlcm1pbmF0ZUBAWUFYWFoAIQFFdmVudFJlZ2lzdGVyACIBRXZlbnRTZXRJbmZvcm1hdGlvbgApAUV2ZW50V3JpdGVUcmFuc2ZlcgAAQURWQVBJMzIuZGxsAAAtAFNsZWVwACAAR2V0U3RhcnR1cEluZm9XABQAR2V0TW9kdWxlSGFuZGxlVwAAYXBpLW1zLXdpbi1jb3JlLXN5bmNoLWwxLTItMC5kbGwAAGFwaS1tcy13aW4tY29yZS1wcm9jZXNzdGhyZWFkcy1sMS0xLTAuZGxsAGFwaS1tcy13aW4tY29yZS1saWJyYXJ5bG9hZGVyLWwxLTItMC5kbGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC/IwBAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKi3y2ZKwAAzV0g0mbU//8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAAiBAAAKgmAACcEAAAHBIAALAmAAAwEgAAThIAAMgmAABUEgAAHxMAAMwmAAAwEwAAdRQAANgmAACAFAAAUxUAAOAmAABgFQAAqRUAAOgmAACwFQAAFBgAAPAmAAAgGAAAMhgAAOAmAABAGAAAeRgAAOAmAACAGAAAmBgAAOAmAACsGAAAABkAACwnAAAIGQAATRkAAEwnAADAGQAADRoAAFQnAACIGgAApRoAAOAmAACsGgAABxsAAHwnAAAgGwAAIhsAAHgnAAAwGwAAThsAACQnAABgGwAAgBsAACQnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAADAAAAMAAAgA4AAABgAACAEAAAAHgAAIAYAAAAkAAAgAAAAAAAAAAAAAAAAAAABAABAAAAqAAAgAIAAADAAACAAwAAANgAAIAEAAAA8AAAgAAAAAAAAAAAAAAAAAEAAADAAQCACAEAgAAAAAAAAAAAAAAAAAAAAQABAAAAIAEAgAAAAAAAAAAAAAAAAAAAAQABAAAAOAEAgAAAAAAAAAAAAAAAAAAAAQAJBAAAUAEAAAAAAAAAAAAAAAAAAAAAAQAJBAAAYAEAAAAAAAAAAAAAAAAAAAAAAQAJBAAAcAEAAAAAAAAAAAAAAAAAAAAAAQAJBAAAgAEAAAAAAAAAAAAAAAAAAAAAAQAJBAAAkAEAAAAAAAAAAAAA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ZQAAAEMAQQBMAEMAAAAAAIAALgABAEwAZQBnAGEAbABDAG8AcAB5AHIAaQBnAGgAdAAAAKkAIABNAGkAYwByAG8AcwBvAGYAdAAgAEMAbwByAHAAbwByAGEAdABpAG8AbgAuACAAQQBsAGwAIAByAGkAZwBoAHQAcwAgAHIAZQBzAGUAcgB2AGUAZAAuAAAAOgAJAAEATwByAGkAZwBpAG4AYQBsAEYAaQBsAGUAbgBhAG0AZQAAAEMAQQBMAEMALgBFAFgARQAAAAAAagAlAAEAUAByAG8AZAB1AGMAdABOAGEAbQBlAAAAAABNAGkAYwByAG8AcwBvAGYAdACuACAAVwBpAG4AZABvAHcAcwCuACAATwBwAGUAcgBhAHQAaQBuAGcAIABTAHkAcwB0AGUAbQAAAAAAPgANAAEAUAByAG8AZAB1AGMAdABWAGUAcgBzAGkAbwBuAAAAMQAwAC4AMAAuADEAOAAzADYAMgAuADEAAAAAAEQAAAABAFYAYQByAEYAaQBsAGUASQBuAGYAbwAAAAAAJAAEAAAAVAByAGEAbgBzAGwAYQB0AGkAbwBuAAAAAAAJBLAEAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAEAAAACAAAAABACAAAAAAAAAEAAATCwAAEwsAAAAAAAAAAAAAfHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/////////////////////////////////////////////////fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8//////98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz//////3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP//////fHx8//////98fHz//////3x8fP//////fHx8//////98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz//////3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP//////fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8//////98fHz//////3x8fP//////fHx8//////98fHz//////3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP//////fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8//////98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz//////3x8fP//////fHx8//////98fHz//////3x8fP//////fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8//////98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz//////3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP//////fHx8////////////////////////////fHx8//////98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz//////3x8fP///////////////////////////3x8fP//////fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8//////98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz//////3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP////////////////////////////////////////////////98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/3x8fP98fHz/fHx8/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJUE5HDQoaCgAAAA1JSERSAAABAAAAAQAIAAAAAHkZ97oAAAHfSURBVHja7dbBCQJBEEVBozP/jDSDgZXV1431rwPNo07zeP75HnVAPQB1QD0AdUA9AHVAPQB1QD0AdUA9AHVAPQB1QD0AdUA9AHVAPQB1QD0AdUA9AHVAPQB1QD0AdUA9AHVAPQB1QD0AdUA9AHVAPQB1QD0AdUA9AHVAPQB1QD0AdUA9AHVAPQB1QD0Adx57/WgAAAAAAAAAAABzAe48+uXzAMYXAgAAAAAAAAC2Atz57wUAAAAAAAAAANgJUN4CAAAAAAAAAAAAUAJ8PAAAAAAAAAAAgKUA488DGF8IAAAAAAAAAAAAAAAAAAAAAACwDOAYfXq8egsAAAAAAAAAAGAawPjzAMYXAgAAAAAAAAAAAAAAAAAAAAAALAM4Rp8er94CAAAAAAAAAACYBjD+PIDxhQAAAAAAAAAAAAAAAAAAAAAAAMsAjtGnx6u3AAAAAAAAAAAApgGMPw9gfCEAAAAAAAAAYBfAlwcAAAAAAAAAADAOYOMA1AH1ANQB9QDUAfUA1AH1ANQB9QDUAfUA1AH1ANQB9QDUAfUA1AH1ANQB9QDUAfUA1AH1ANQB9QDUAfUA1AH1ANQB9QDUAfUA1AH1ANQB9QDUAfUA1AH1ANQB9QDUAfUA1AH1ANQB9d4hCu5bFop9jAAAAABJRU5ErkJggigAAAAgAAAAQAAAAAEAIAAAAAAAABAAABMLAAATCwAAAAAAAAAAAABHR0f/RkZG/0dHR/9GRkb/R0dH/0ZGRv9GRkb/R0ZH/0ZGRv9GRkb/R0dH/0ZGRv9HR0f/RkZG/0ZGRv9HR0f/RkZG/0ZGRv9HR0f/R0dH/0dHR/9GRkb/R0dH/0dHR/9HR0f/RkZG/0dHR/9HRkf/RkZG/0dHR/9HR0f/RkZG/0dHR/9GRkb/R0dH/0ZGRv9HRkf/RkZG/0ZGRv9HR0f/RkZG/0ZGRv9HR0f/RkZG/0ZGRv9GRkb/RkZG/0dHR/9GRkb/R0dH/0ZGRv9HR0f/R0dH/0ZGRv9HR0f/RkZG/0ZGRv9HR0f/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/R0dH/0dHR/9GRkb/R0dH/0ZGRv9GRkb/R0dH/0dHR/9GRkb/RkZG/0ZGRv9HR0f/RkZG/0dGR/9GRkb/RkZG/0ZGRv9HR0f/RkZG/0ZGRv9GRkb/R0dH/0dHR/9GRkb/R0dH/0ZGRv9GRkb/R0ZH/0ZGRv9HR0f/R0dH/0dHR/9HRkf/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9HR0f/////////////////////////////////////////////////////////////////////////////////////////////////R0dH/0dGRv9HR0f/RkZG/0ZGRv9HR0f/RkZG/0ZGRv9HR0f/RkZG/0ZGRv9GRkb/RkZG/0ZGRv////////////////////////////////////////////////////////////////////////////////////////////////9GRkb/R0dH/0dHR/9GRkb/RkZG/0ZGRv9HRkb/RkZG/0ZGRv9GRkb/R0dH/0ZGRv9GRkb/R0dH////////////R0dH/0ZGRv9HRkf/R0dH/0ZGRv9HR0f/RkZG/0dHR/9HR0f/R0dH/0dHR/9GRkb/R0dH/0dGRv///////////0dGRv9GRkb/R0dH/0dHR/9GRkb/RkZG/0dHR/9GRkb/R0dH/0dHR/9HRkf/R0dH/0ZGRv9GRkb///////////9HR0f/R0dH/0dHR/9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0dHR/9HR0f/R0dH////////////R0dH/0dHR/9HR0f/R0dH/0ZGRv9GRkb/RkZG/0ZGRv9HR0f/R0ZH/0dHR/9HR0f/RkZG/0ZGRv///////////0ZGRv9GRkb///////////9GRkb/RkZG////////////RkZG/0dHR////////////0ZGRv9GRkb///////////9HR0f/RkZG/0dHR/9GRkb/R0dH/0dHR/9HRkb/R0dH/0dGRv9HRkf/RkZG/0ZGRv9GRkb/RkZG////////////RkZG/0ZGRv///////////0ZGRv9GRkb///////////9HRkf/R0dH////////////R0dH/0dGRv///////////0dHR/9HR0f/RkZG/0ZGRv9GRkb/RkZG/0dHR/9HR0f/RkZG/0ZGRv9HR0f/RkZG/0ZGRv9GRkb///////////9HR0f/R0dH/0dHR/9GRkb/RkZG/0ZGRv9HR0f/RkZG/0ZGRv9GRkb/R0dH/0ZGRv9GRkb/R0ZG////////////R0dH/0dGR/9GRkb/RkZG/0dHR/9GRkb/R0dH/0dHR/9HR0f/R0dH/0dHR/9HR0f/RkZG/0ZGRv///////////0ZGRv9HR0f/R0dH/0ZGRv9HRkf/RkZG/0ZGRv9GRkb/R0dH/0dHR/9GRkb/RkZG/0ZGRv9GRkb///////////9GRkb/R0dH/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0dHR/9GRkb/R0dH/0ZGRv9GRkb/RkZG////////////R0ZG/0ZGRv///////////0ZGRv9GRkb///////////9HR0f/RkZG////////////R0dH/0dGR////////////0dHR/9GRkb/R0dH/0dHR/9HRkb/RkZG/0dHR/9GRkb/R0dH/0ZGRv9GRkb/R0ZH/0ZGRv9HR0f///////////9HR0f/RkZG////////////R0dH/0dHR////////////0ZGRv9HR0f///////////9GRkb/R0dH////////////R0dH/0ZGRv9HR0f/R0dH/0dHR/9HR0f/RkZG/0ZGRv9GRkb/R0dH/0ZGRv9HR0f/RkZG/0ZGRv///////////0dHR/9GRkb/R0ZH/0dGR/9GRkb/R0dH/0ZGRv9GRkb/RkZG/0ZGRv9HR0f/R0dH/0ZGRv9HR0f///////////9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/R0dH/0dHR/9HRkb/RkZG////////////R0ZG/0dHR/9GRkb/RkZG/0ZGRv9HR0f/RkZG/0dHR/9HR0f/R0dH/0dHR/9GRkb/R0dH/0dHR////////////0dGR/9HR0f/R0ZG/0dHR/9HR0f/RkZG/0dHR/9HR0f/R0dH/0ZGRv9GRkb/R0dH/0dHR/9GRkb///////////9GRkb/RkZG/0dHR/9GRkb/RkZG/0ZGRv9GRkb/RkZG/0dGRv9HR0f/R0ZG/0ZGRv9GRkb/R0dH////////////RkZG/0dHR/9GRkb/R0dH/0ZGRv9HR0f/R0dH/0ZGRv9HR0f/R0dH/0dHR/9GRkb/R0dH/0dGR////////////0ZGRv9HR0f///////////9GRkb/RkZG////////////R0dH/0dHR////////////0dHR/9HR0f///////////9GRkb/RkZG/0ZGRv9HR0f/R0dH/0ZGRv9HR0f/R0dH/0ZGRv9HR0f/R0ZH/0ZGRv9GRkb/RkZG////////////R0dH/0dHR////////////0ZGRv9HR0f///////////9GRkb/R0dH////////////RkZG/0dGR////////////0dHR/9GRkb/R0ZH/0ZGRv9GRkb/R0dH/0ZGRv9GRkb/R0dH/0ZGRv9GRkb/R0dH/0ZGRv9GRkb///////////9HR0f/RkZG/0dHR/9GRkb/R0dH/0ZGRv9HRkf/RkZG/0dHR/9GRkb/RkZG/0dGRv9HR0f/R0ZG////////////RkZG/0ZGRv9HRkb/R0ZH/0ZGRv9HR0f/RkZG/0dGRv9HR0f/R0dH/0dHR/9GRkb/R0dH/0dHR////////////0dHR/9HR0f/R0ZG/0dHR/9HR0f/R0dH/0dHR/9HR0f/R0ZH/0ZGRv9GRkb/R0dH/0ZGRv9GRkb///////////9HRkb/R0dH/0dHR/9HRkf/R0dH/0ZGRv9GRkb/RkZG/0dHR/9HR0f/R0ZH/0ZGRv9GRkb/RkZG////////////R0dH/0ZGRv//////////////////////////////////////////////////////R0dH/0dHR////////////0ZGRv9HR0f/RkZG/0dHR/9HR0f/R0dH/0ZGRv9HR0f/R0dH/0ZGRv9HR0f/RkZG/0dGRv9GRkb///////////9GRkb/RkZG//////////////////////////////////////////////////////9HR0f/RkZG////////////RkZG/0ZGRv9HR0f/R0dH/0ZGRv9GRkb/R0ZH/0dHR/9HR0f/R0dH/0dHR/9GRkb/R0dH/0ZGRv///////////0dHR/9GRkb///////////9GRkb/R0dH/0dHR/9HRkf/R0dH/0dHR////////////0ZGRv9GRkb///////////9GRkb/R0dH/0ZGRv9HRkf/RkZG/0ZGRv9HR0f/R0ZH/0ZGRv9HR0f/RkZG/0ZGRv9HR0f/R0ZH////////////RkZG/0ZGRv//////////////////////////////////////////////////////R0dH/0ZGRv///////////0dHR/9GRkb/RkZG/0dGR/9HR0f/RkZG/0ZGRv9HR0f/RkZG/0ZGRv9HR0f/R0dH/0dHR/9GRkb///////////9HR0f/RkZG//////////////////////////////////////////////////////9HR0f/RkZG////////////R0dH/0dGR/9HR0f/RkZG/0dHR/9GRkb/RkZG/0ZGRv9GRkb/R0dH/0dHR/9GRkb/R0dH/0ZGRv///////////0dHR/9GRkb/RkZG/0dGR/9GRkb/RkZG/0ZGRv9GRkb/RkZG/0dHR/9HR0f/RkZG/0dHR/9GRkb///////////9GRkb/RkZG/0dHR/9HRkf/R0dH/0ZGRv9HR0f/R0dH/0ZGRv9GRkb/RkZG/0dGR/9HR0f/RkZG////////////RkZG/0ZGRv9GRkb/RkZG/0dHR/9HR0f/R0dH/0ZGRv9GRkb/RkZG/0dHR/9HRkf/RkZG/0dHR////////////0ZGRv9HR0f/RkZG/0dHR/9HR0f/R0dH/0dHR/9GRkb/R0ZG/0dHR/9HR0f/R0dH/0ZGRv9GRkb/////////////////////////////////////////////////////////////////////////////////////////////////RkZG/0ZGRv9GRkb/R0ZH/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/R0dH/0dGR/9GRkb/R0dH/0ZGRv////////////////////////////////////////////////////////////////////////////////////////////////9HR0f/RkZG/0ZGRv9HR0f/RkZG/0ZGRv9HRkf/RkZG/0ZGRv9GRkb/R0ZG/0ZGRv9GRkb/R0dH/0ZGRv9HR0f/R0dH/0ZGRv9HR0f/RkZG/0dHR/9GRkb/RkZG/0dHR/9HR0f/R0dH/0ZGRv9HR0f/RkZG/0ZGRv9GRkb/R0dH/0dHR/9GRkb/RkZG/0ZGRv9HR0f/RkZG/0ZGRv9GRkb/RkZG/0dHR/9GRkb/RkZG/0ZGRv9GRkb/R0dH/0dHR/9HR0f/R0ZG/0dHR/9HR0f/RkZG/0dHR/9GRkb/R0dH/0ZGRv9GRkb/RkZG/0dGR/9HRkf/R0ZH/0ZGRv9HR0f/R0dH/0dHR/9GRkb/R0dH/0dHR/9GRkb/RkZG/0ZGRv9HR0f/R0dH/0ZGRv9HR0f/RkZG/0ZGRv9GRkb/R0dH/0ZGRv9GRkb/R0dH/0ZGRv9GRkb/RkZG/0dHR/9HR0f/RkZG/0ZGRv9GRkb/R0dH/0dHR/9GRkb/RkZG/0dHR/9HR0f/RkZG/0ZGRv9HR0f/RkZG/0dGR/9HR0f/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAMAAAAGAAAAABACAAAAAAAAAkAAATCwAAEwsAAAAAAAAAAAAARkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG////////////RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb///////////9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG////////////RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb///////////9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG////////////RkZG/0ZGRv///////////0ZGRv9GRkb/RkZG/0ZGRv///////////0ZGRv9GRkb/RkZG/0ZGRv///////////0ZGRv9GRkb///////////9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG////////////RkZG/0ZGRv///////////0ZGRv9GRkb/RkZG/0ZGRv///////////0ZGRv9GRkb/RkZG/0ZGRv///////////0ZGRv9GRkb///////////9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG////////////RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb///////////9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG////////////RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb///////////9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG////////////RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb///////////9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG////////////RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb///////////9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG////////////RkZG/0ZGRv///////////0ZGRv9GRkb/RkZG/0ZGRv///////////0ZGRv9GRkb/RkZG/0ZGRv///////////0ZGRv9GRkb///////////9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG////////////RkZG/0ZGRv///////////0ZGRv9GRkb/RkZG/0ZGRv///////////0ZGRv9GRkb/RkZG/0ZGRv///////////0ZGRv9GRkb///////////9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG////////////RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb///////////9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG////////////RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb///////////9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG////////////RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb///////////9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG////////////RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb///////////9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG////////////RkZG/0ZGRv///////////0ZGRv9GRkb/RkZG/0ZGRv///////////0ZGRv9GRkb/RkZG/0ZGRv///////////0ZGRv9GRkb///////////9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG////////////RkZG/0ZGRv///////////0ZGRv9GRkb/RkZG/0ZGRv///////////0ZGRv9GRkb/RkZG/0ZGRv///////////0ZGRv9GRkb///////////9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG////////////RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb///////////9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG////////////RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb///////////9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG////////////RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb///////////9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG////////////RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb///////////9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG////////////RkZG/0ZGRv///////////////////////////////////////////////////////////////////////////0ZGRv9GRkb///////////9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG////////////RkZG/0ZGRv///////////////////////////////////////////////////////////////////////////0ZGRv9GRkb///////////9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG////////////RkZG/0ZGRv///////////0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv///////////0ZGRv9GRkb///////////9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG////////////RkZG/0ZGRv///////////0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv///////////0ZGRv9GRkb///////////9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG////////////RkZG/0ZGRv///////////////////////////////////////////////////////////////////////////0ZGRv9GRkb///////////9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG////////////RkZG/0ZGRv///////////////////////////////////////////////////////////////////////////0ZGRv9GRkb///////////9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG////////////RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb///////////9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG////////////RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb///////////9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/RkZG/0ZGRv9GRkb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAQAEBAAAAEAIABoBAAAAQAAAAAAAQAgABgCAAACACAgAAABACAAqBAAAAMAMDAAAAEAIACoJQAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAgAAAAAKAIoGiggKCIoJCgWKJgonCiiKKQogAAADAAAAwAAAAIoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; byte[] bytes = System.Convert.FromBase64String(base64); IntPtr printer = new IntPtr(); int pcWritten = 0; DOCINFO docInfo = new DOCINFO { pDataType = "RAW" }; PrintDirect.OpenPrinter(printerAddress, ref printer, 0); PrintDirect.StartDocPrinter(printer, 1, ref docInfo); PrintDirect.StartPagePrinter(printer); try { PrintDirect.WritePrinter(printer, bytes, bytes.Length, ref pcWritten); } catch (Exception e) { Console.WriteLine(e.Message); } PrintDirect.EndPagePrinter(printer); PrintDirect.EndDocPrinter(printer); PrintDirect.ClosePrinter(printer); }
public Native(DOCINFO docInfo) { cbSize = docInfo.cbSize; lpszDocName = Marshal.StringToCoTaskMemAuto(docInfo.lpszDocName); lpszOutput = Marshal.StringToCoTaskMemAuto(docInfo.lpszOutput); lpszDatatype = Marshal.StringToCoTaskMemAuto(docInfo.lpszDatatype); fwType = docInfo.fwType; }
//2D Lable 打印方式 public static void Print2DLabel(string pinterName, System.Collections.ArrayList printValueList) { System.Text.ASCIIEncoding asciiEncoding = new System.Text.ASCIIEncoding(); //order byte[] byteArray = new byte[] { (byte)27 }; string Esc = asciiEncoding.GetString(byteArray); DOCINFO di = new DOCINFO(); int pcWritten = 0; di.pDocName = "CT4i"; di.pDataType = "RAW"; //打开打印机 string PrinterName = pinterName; int lhPrinter = openPrinter(PrinterName); int lineCount = 0; //标记现在打印的是第几行 string printValueA = string.Empty; //StartDocPrinter((IntPtr)lhPrinter, 1, ref di); //StartPagePrinter((IntPtr)lhPrinter); //打印数据,两行算一个条码,打完要SATO结束指令,传过来的值的行数一定是2的倍数 for (int i = 0; i < printValueList.Count; i++) { lineCount++; if (lineCount == 1) { StartDocPrinter((IntPtr)lhPrinter, 1, ref di); StartPagePrinter((IntPtr)lhPrinter); //SATO 打印机开始指令,必须有 printValueA = asciiEncoding.GetString(new byte[] { (byte)2 }) + Esc + "A"; WritePrinter((IntPtr)lhPrinter, printValueA, printValueA.Length, ref pcWritten); } printValueA = printValueList[i].ToString().Replace("\r\n", ""); WritePrinter((IntPtr)lhPrinter, printValueA, printValueA.Length, ref pcWritten); if (lineCount == 2) { lineCount = 0; printValueA = Esc + "Q1" + Esc + "Z" + asciiEncoding.GetString(new byte[] { (byte)3 }); WritePrinter((IntPtr)lhPrinter, printValueA, printValueA.Length, ref pcWritten); EndPagePrinter((IntPtr)lhPrinter); EndDocPrinter((IntPtr)lhPrinter); //ClosePrinter((IntPtr)lhPrinter); } } //SATO打印结束指令 //printValueA = Esc + "Q1" + Esc + "Z" + asciiEncoding.GetString(new byte[] { (byte)3 }); //WritePrinter((IntPtr)lhPrinter, printValueA, printValueA.Length, ref pcWritten); //EndPagePrinter((IntPtr)lhPrinter); //EndDocPrinter((IntPtr)lhPrinter); ClosePrinter((IntPtr)lhPrinter); }
internal static bool StartDoc(GraphicsPrinter gr, string doc_name, string output_file) { DOCINFO di = new DOCINFO(); int ret; di.cbSize = Marshal.SizeOf(di); di.lpszDocName = Marshal.StringToHGlobalUni(doc_name); di.lpszOutput = IntPtr.Zero; di.lpszDatatype = IntPtr.Zero; di.fwType = 0; ret = Win32StartDoc(gr.Hdc, ref di); Marshal.FreeHGlobal(di.lpszDocName); return((ret > 0) ? true : false); }
public IDisposable StartDocument(string name) { if (IsInvalid || IsClosed) { return(null); } var di = new DOCINFO(name); if (!StartDocPrinter(this, 1, ref di)) { ThrowLastWin32Error(); } return(new PrinterDocument(this)); }
// Unfortunately, PrinterSettings and PageSettings couldn't be referencing each other, // thus we need to pass them separately internal static IntPtr CreateGraphicsContext(PrinterSettings settings, PageSettings default_page_settings) { IntPtr graphics = IntPtr.Zero; string name; if (!settings.PrintToFile) { StringBuilder sb = new StringBuilder(1024); int length = sb.Capacity; LibcupsNative.cupsTempFd(sb, length); name = sb.ToString(); tmpfile = name; } else { name = settings.PrintFileName; } PaperSize psize = default_page_settings.PaperSize; int width, height; if (default_page_settings.Landscape) { // Swap in case of landscape width = psize.Height; height = psize.Width; } else { width = psize.Width; height = psize.Height; } Gdip.GdipGetPostScriptGraphicsContext(name, width * 72 / 100, height * 72 / 100, default_page_settings.PrinterResolution.X, default_page_settings.PrinterResolution.Y, ref graphics); DOCINFO doc = default; doc.filename = name; doc.settings = settings; doc.default_page_settings = default_page_settings; doc_info.Add(graphics, doc); return(graphics); }
//读模板打印方式 public static void Print(string pinterName, System.Collections.ArrayList printValueList) { System.Text.ASCIIEncoding asciiEncoding = new System.Text.ASCIIEncoding(); //order byte[] byteArray = new byte[] { (byte)27 }; string Esc = asciiEncoding.GetString(byteArray); DOCINFO di = new DOCINFO(); int pcWritten = 0; di.pDocName = "CT4i"; di.pDataType = "RAW"; //打开打印机 string PrinterName = pinterName; int lhPrinter = openPrinter(PrinterName); StartDocPrinter((IntPtr)lhPrinter, 1, ref di); StartPagePrinter((IntPtr)lhPrinter); //SATO 打印机开始指令,必须有 string printValueA = asciiEncoding.GetString(new byte[] { (byte)2 }) + Esc + "A"; WritePrinter((IntPtr)lhPrinter, printValueA, printValueA.Length, ref pcWritten); //打印数据 for (int i = 0; i < printValueList.Count; i++) { printValueA = printValueList[i].ToString(); //printValueA = printValueA.Replace("\"", " "); //printValueA = printValueA.Replace("+", ""); //printValueA = printValueA.Replace(" ", ""); //printValueA = printValueA.Replace("Esc", Esc).Trim('"'); WritePrinter((IntPtr)lhPrinter, printValueA, printValueA.Length, ref pcWritten); } //SATO打印结束指令 printValueA = Esc + "Q1" + Esc + "Z" + asciiEncoding.GetString(new byte[] { (byte)3 }); WritePrinter((IntPtr)lhPrinter, printValueA, printValueA.Length, ref pcWritten); EndPagePrinter((IntPtr)lhPrinter); EndDocPrinter((IntPtr)lhPrinter); ClosePrinter((IntPtr)lhPrinter); }
internal static bool EndDoc(GraphicsPrinter gr) { DOCINFO doc = (DOCINFO)doc_info[gr.Hdc]; gr.Graphics.Dispose(); // Dispose object to force surface finish IntPtr options; int options_count = GetCupsOptions(doc.settings, doc.default_page_settings, out options); cupsPrintFile(doc.settings.PrinterName, doc.filename, doc.title, options_count, options); cupsFreeOptions(options_count, options); doc_info.Remove(gr.Hdc); if (tmpfile != null) { try { File.Delete(tmpfile); } catch { } } return(true); }
public static bool SendStringToPrinter(string szPrinterName, string docName, string text) { IntPtr pText = Marshal.StringToCoTaskMemAnsi(text); try { DOCINFO di = new DOCINFO(); di.pDocName = docName; di.pDataType = "RAW"; IntPtr hPrinter = IntPtr.Zero; if (!PrintDirect.OpenPrinter(szPrinterName.Normalize(), ref hPrinter, IntPtr.Zero)) { BombWin32(); } if (!PrintDirect.StartDocPrinter(hPrinter, 1, ref di)) { BombWin32(); } if (!PrintDirect.StartPagePrinter(hPrinter)) { BombWin32(); } int dwWritten = 0; if (!PrintDirect.WritePrinter(hPrinter, pText, text.Length, ref dwWritten)) { BombWin32(); } PrintDirect.EndPagePrinter(hPrinter); PrintDirect.EndDocPrinter(hPrinter); PrintDirect.ClosePrinter(hPrinter); return(true); } catch (Exception ex) { Debug.WriteLine(ex); return(false); } finally { Marshal.FreeCoTaskMem(pText); } }
public static extern int StartDoc(HandleRef hDC, DOCINFO lpDocInfo);
public static extern bool StartDocPrinter(IntPtr hPrinter, int Level, ref DOCINFO pDocInfo);
public void printReceipt(string jsonString, string facename = "20 cpi") { if (string.IsNullOrEmpty(jsonString)) { return; } // Convert JSON to the key value pairs JsonValue jsonValue = JsonValue.Parse(jsonString); if (jsonValue.Count == 0) { return; } IntPtr hPrinter = IntPtr.Zero; OpenPrinter(_printerName, ref hPrinter, IntPtr.Zero); // Create Printer Device Context IntPtr hwnd = IntPtr.Zero; int size = DocumentProperties(hwnd, hPrinter, _printerName, IntPtr.Zero, IntPtr.Zero, 0); IntPtr pDevmode = Marshal.AllocHGlobal(size); int ret = DocumentProperties(hwnd, hPrinter, _printerName, pDevmode, IntPtr.Zero, DM_OUT_BUFFER); IntPtr hDC = CreateDC(null, _printerName, null, pDevmode); // Make Print-Job DOCINFO di = new DOCINFO(); di.cbSize = Marshal.SizeOf(di); di.lpszDocName = "IPTS Receipt"; // Start printing StartDoc(hDC, ref di); StartPage(hDC); LOGFONT lf = new LOGFONT(); IntPtr hFont = IntPtr.Zero; IntPtr oldFont = IntPtr.Zero; string str; int fontsize, pointsize; // Windows font pointsize = 10; fontsize = (int)((pointsize * 10) * GetDeviceCaps(hDC, LOGPIXELSY) / 720); lf.lfHeight = -fontsize; lf.lfFaceName = facename; hFont = CreateFontIndirect(lf); oldFont = SelectObject(hDC, hFont); List <ReceiptSchema> list = new List <ReceiptSchema>(); list.Add(new ReceiptSchema() { Key = 0, Value = "Платеж успешно совершен" }); list.Add(new ReceiptSchema() { Key = 0, Value = "----------------------------------------------------" }); list.Add(new ReceiptSchema() { Key = 0, Value = "№ квитанции" }); list.Add(new ReceiptSchema() { Key = 0, Value = jsonValue["receiptId"] }); list.Add(new ReceiptSchema() { Key = 0, Value = "ФИО плательщика" }); list.Add(new ReceiptSchema() { Key = 0, Value = jsonValue["guestFullname"] }); list.Add(new ReceiptSchema() { Key = 0, Value = "ИИН/БИН плательщика" }); list.Add(new ReceiptSchema() { Key = 0, Value = jsonValue["guestTaxpayerIdNumber"] }); list.Add(new ReceiptSchema() { Key = 0, Value = "Наименование услуги" }); list.Add(new ReceiptSchema() { Key = 0, Value = jsonValue["serviceName"] }); list.Add(new ReceiptSchema() { Key = 0, Value = "Дата:" }); list.Add(new ReceiptSchema() { Key = 0, Value = jsonValue["created"] }); list.Add(new ReceiptSchema() { Key = 0, Value = "Получатель" }); list.Add(new ReceiptSchema() { Key = 0, Value = jsonValue["hotelName"] }); list.Add(new ReceiptSchema() { Key = 0, Value = "Адрес получателя" }); list.Add(new ReceiptSchema() { Key = 0, Value = jsonValue["hotelAddress"] }); list.Add(new ReceiptSchema() { Key = 0, Value = "БИН получателя" }); list.Add(new ReceiptSchema() { Key = 0, Value = jsonValue["agentBusinessNumber"] }); list.Add(new ReceiptSchema() { Key = 0, Value = "Оплачено с" }); list.Add(new ReceiptSchema() { Key = 0, Value = string.Format("IPTS {0}", jsonValue["terminalId"]) }); list.Add(new ReceiptSchema() { Key = 0, Value = "----------------------------------------------------" }); list.Add(new ReceiptSchema() { Key = 0, Value = "Оплаченная сумма" }); list.Add(new ReceiptSchema() { Key = 0, Value = string.Format("{0} тенге", jsonValue["payment"]) }); list.Add(new ReceiptSchema() { Key = 0, Value = "Ожидаемая сумма" }); list.Add(new ReceiptSchema() { Key = 0, Value = string.Format("{0} тенге", jsonValue["expectedPayment"]) }); list.Add(new ReceiptSchema() { Key = 0, Value = "----------------------------------------------------" }); list.Add(new ReceiptSchema() { Key = 0, Value = "Обязательно сохраняйте квитанцию." }); list.Add(new ReceiptSchema() { Key = 0, Value = "СПАСИБО за использование наших услуг!" }); int x = 0, y = -1; foreach (ReceiptSchema pair in list) { int handler = pair.Key; str = pair.Value; if (handler == 1) { x = 148; } else if (handler == 0) { x = 0; y++; } TextOut(hDC, x, y * 50, str, str.Length); } SelectObject(hDC, oldFont); DeleteObject(hFont); // Cut paper pointsize = 12; fontsize = (int)((pointsize * 10) * GetDeviceCaps(hDC, LOGPIXELSY) / 720); lf.lfHeight = -fontsize; lf.lfFaceName = "Control"; hFont = CreateFontIndirect(lf); oldFont = SelectObject(hDC, hFont); str = ""; TextOut(hDC, 0, y * 50, str, str.Length); SelectObject(hDC, oldFont); DeleteObject(hFont); // End Printing EndPage(hDC); EndDoc(hDC); // Release Printer Device Context DeleteDC(hDC); Marshal.FreeHGlobal(pDevmode); ClosePrinter(hPrinter); }
internal static partial int StartDoc( #if NET7_0_OR_GREATER [MarshalUsing(typeof(HandleRefMarshaller))] #endif HandleRef hDC, DOCINFO lpDocInfo);
public void printerFontTest() { IntPtr hPrinter = IntPtr.Zero; OpenPrinter(_printerName, ref hPrinter, IntPtr.Zero); // Create Printer Device Con IntPtr hwnd = IntPtr.Zero; int size = DocumentProperties(hwnd, hPrinter, _printerName, IntPtr.Zero, IntPtr.Zero, 0); IntPtr pDevmode = Marshal.AllocHGlobal(size); int ret = DocumentProperties(hwnd, hPrinter, _printerName, pDevmode, IntPtr.Zero, DM_OUT_BUFFER); IntPtr hDC = CreateDC(null, _printerName, null, pDevmode); // Make Print-Job DOCINFO di = new DOCINFO(); di.cbSize = Marshal.SizeOf(di); di.lpszDocName = "Driver Test Print"; // Start printing StartDoc(hDC, ref di); StartPage(hDC); LOGFONT lf = new LOGFONT(); IntPtr hFont = IntPtr.Zero; IntPtr oldFont = IntPtr.Zero; string str; int fontsize, pointsize; // Windows font pointsize = 15; fontsize = (int)((pointsize * 10) * GetDeviceCaps(hDC, LOGPIXELSY) / 720); lf.lfHeight = -fontsize; lf.lfFaceName = "Arial"; hFont = CreateFontIndirect(lf); oldFont = SelectObject(hDC, hFont); str = "Hello World! Здравствуй мир!"; TextOut(hDC, 10, 10, str, str.Length); SelectObject(hDC, oldFont); DeleteObject(hFont); // Printer font pointsize = 12; fontsize = (int)((pointsize * 10) * GetDeviceCaps(hDC, LOGPIXELSY) / 720); lf.lfHeight = -fontsize; lf.lfFaceName = "15 cpi"; hFont = CreateFontIndirect(lf); oldFont = SelectObject(hDC, hFont); str = "Hello World! Здравствуй мир!"; TextOut(hDC, 10, 50, str, str.Length); SelectObject(hDC, oldFont); DeleteObject(hFont); // Barcode pointsize = 42; fontsize = (int)((pointsize * 10) * GetDeviceCaps(hDC, LOGPIXELSY) / 720); lf.lfHeight = -fontsize; lf.lfFaceName = "Code39"; hFont = CreateFontIndirect(lf); oldFont = SelectObject(hDC, hFont); str = "ABC123456"; TextOut(hDC, 10, 90, str, str.Length); SelectObject(hDC, oldFont); DeleteObject(hFont); // Cash drawer pointsize = 12; fontsize = (int)((pointsize * 10) * GetDeviceCaps(hDC, LOGPIXELSY) / 720); lf.lfHeight = -fontsize; lf.lfFaceName = "Control"; hFont = CreateFontIndirect(lf); oldFont = SelectObject(hDC, hFont); str = "A"; TextOut(hDC, 10, 130, str, str.Length); SelectObject(hDC, oldFont); DeleteObject(hFont); // Cut paper pointsize = 12; fontsize = (int)((pointsize * 10) * GetDeviceCaps(hDC, LOGPIXELSY) / 720); lf.lfHeight = -fontsize; lf.lfFaceName = "Control"; hFont = CreateFontIndirect(lf); oldFont = SelectObject(hDC, hFont); str = "P"; TextOut(hDC, 10, 170, str, str.Length); SelectObject(hDC, oldFont); DeleteObject(hFont); // Graphic data from NV memory pointsize = 12; fontsize = (int)((pointsize * 10) * GetDeviceCaps(hDC, LOGPIXELSY) / 720); lf.lfHeight = -fontsize; lf.lfFaceName = "Control"; hFont = CreateFontIndirect(lf); oldFont = SelectObject(hDC, hFont); str = "G"; TextOut(hDC, 10, 210, str, str.Length); SelectObject(hDC, oldFont); DeleteObject(hFont); // End Printing EndPage(hDC); EndDoc(hDC); // Release Printer Device Context DeleteDC(hDC); Marshal.FreeHGlobal(pDevmode); ClosePrinter(hPrinter); }
static extern int Win32StartDoc(IntPtr hdc, [In] ref DOCINFO lpdi);
public static extern int StartDoc(IntPtr hDC, DOCINFO lpDocInfo);
internal static extern int StartDoc(IntPtr hdc, DOCINFO lpdi);
private static extern int StartDocPrinter(int hPrinter, int Level, ref DOCINFO pDocInfo);
//and to use it public void Print(string printerName, string docName, string referencePiece, string designationPiece, string code) { System.IntPtr lhPrinter = new System.IntPtr(); DOCINFO di = new DOCINFO(); int pcWritten = 0; string st1; di.pDocName = docName; di.pDataType = "RAW"; //If lhPrinter is 0 then an error has occured try { PrintDirect.OpenPrinter(printerName, ref lhPrinter, 0); PrintDirect.StartDocPrinter(lhPrinter, 1, ref di); PrintDirect.StartPagePrinter(lhPrinter); //"^XA^CFD^FS\n^PON^FS\n^FWN^FS\n^LH020,30^FS\n^FO0,5^A0,N,50,50^FDSTART TEST^FS\n^FO0,50^A0,N,30,30^FD\nTOFUS MAXIMUS^FS\n^PQ1\n^XZ"; /* * //ZPL2 * * st1 = "^XA"; * * st1 += "^LH50,50"; * * st1 += "^FO0,0^AF^FD"+texteHaut+"^FS"; * * st1 += "^FO50,50,^BC,50"; * * st1 += "^FD"+code+"^FS"; * * //st1 += ""; * * st1 += "^XZ"; * */ //st1 = "\x1b*p600x600Y\r\n"; //PrintDirect.WritePrinter(lhPrinter, st1, st1.Length, ref pcWritten); //st1 = "x1b*pcộng hoà xã hội chủ"; ////EPL2 //st1 = "\nN\n"; //st1 += "cộng hoà xã hội\"" + referencePiece + "\"\n"; //st1 += "A25,25,0,2,1,1,N,\"" + designationPiece + "\"\n"; //st1 += "B25,45,0,1E,2,3,50,B,\"" + code + "\"\n"; //st1 += "P1\n"; st1 = "\x1b*p600x600Y\r\n"; PrintDirect.WritePrinter(lhPrinter, st1, st1.Length, ref pcWritten); st1 = "hello"; PrintDirect.WritePrinter(lhPrinter, st1, st1.Length, ref pcWritten); st1 = "cộng hoà xã"; prtUnicode.WritePrinter(lhPrinter, st1, st1.Length, ref pcWritten); st1 = "\f"; PrintDirect.WritePrinter(lhPrinter, st1, st1.Length, ref pcWritten); //PrintDirect.WritePrinter(lhPrinter, st1, st1.Length, ref pcWritten); //prtUnicode.WritePrinter(lhPrinter, st1, st1.Length, ref pcWritten); } catch (Exception ex) { throw new ApplicationException(ex.Message); } PrintDirect.EndPagePrinter(lhPrinter); PrintDirect.EndDocPrinter(lhPrinter); PrintDirect.ClosePrinter(lhPrinter); }
private static extern long StartDocPrinter(IntPtr hPrinter, int Level, ref DOCINFO pDocInfo);
//serialNumber1 和SerialNumber2 的打印方式 public static void Print(string pinterName, System.Collections.ArrayList printValueList, string printType) { System.Text.ASCIIEncoding asciiEncoding = new System.Text.ASCIIEncoding(); //order byte[] byteArray = new byte[] { (byte)27 }; string Esc = asciiEncoding.GetString(byteArray); DOCINFO di = new DOCINFO(); int pcWritten = 0; di.pDocName = "CT4i"; di.pDataType = "RAW"; //打开打印机 string PrinterName = pinterName; int lhPrinter = openPrinter(PrinterName); string printValueA = string.Empty; int count = 0; //计算打印到了某一行第几个条码 int lineCount = 0; //标记现在打印的是第几行 StartDocPrinter((IntPtr)lhPrinter, 1, ref di); StartPagePrinter((IntPtr)lhPrinter); SystemSettingFacade _systemFacade = new SystemSettingFacade(); Domain.BaseSetting.Parameter SerialNumber1 = (Domain.BaseSetting.Parameter)_systemFacade.GetParameter("SERIAL NUMBER1", "PRINTRELATE"); Domain.BaseSetting.Parameter SerialNumber2 = (Domain.BaseSetting.Parameter)_systemFacade.GetParameter("SERIAL NUMBER2", "PRINTRELATE"); //SATO 打印机开始指令 if (SerialNumber1.ParameterCode != printType && SerialNumber2.ParameterCode != printType) { printValueA = asciiEncoding.GetString(new byte[] { (byte)2 }) + Esc + "A"; WritePrinter((IntPtr)lhPrinter, printValueA, printValueA.Length, ref pcWritten); } //打印数据 for (int i = 0; i < printValueList.Count; i++) { lineCount++; //防止\r\n被split掉 if ((printValueList[i].ToString().IndexOf("#\r\n")) != -1) { printValueA = printValueList[i].ToString().Substring(0, (printValueList[i].ToString().IndexOf("#\r\n"))); } printValueA = printValueList[i].ToString().Replace("#", " "); //将字符串里面的#替换成3个空格 WritePrinter((IntPtr)lhPrinter, printValueA, printValueA.Length, ref pcWritten); //打一行 if (lineCount == 2) { lineCount = 0; //一组条码打印好之后换到下一行 string NewLine = asciiEncoding.GetString(new byte[] { (byte)27 }) + asciiEncoding.GetString(new byte[] { (byte)65 }) + asciiEncoding.GetString(new byte[] { (byte)28 }); if (SerialNumber1.ParameterCode == printType || SerialNumber2.ParameterCode == printType) { NewLine = "\r\n"; } WritePrinter((IntPtr)lhPrinter, NewLine, NewLine.Length, ref pcWritten); } } //SATO打印结束指令 if (SerialNumber1.ParameterCode != printType && SerialNumber2.ParameterCode != printType) { printValueA = Esc + "Q1" + Esc + "Z" + asciiEncoding.GetString(new byte[] { (byte)3 }); WritePrinter((IntPtr)lhPrinter, printValueA, printValueA.Length, ref pcWritten); } EndPagePrinter((IntPtr)lhPrinter); EndDocPrinter((IntPtr)lhPrinter); ClosePrinter((IntPtr)lhPrinter); }
// Unfortunately, PrinterSettings and PageSettings couldn't be referencing each other, // thus we need to pass them separately internal static IntPtr CreateGraphicsContext (PrinterSettings settings, PageSettings default_page_settings) { IntPtr graphics = IntPtr.Zero; string name; if (!settings.PrintToFile) { StringBuilder sb = new StringBuilder (1024); int length = sb.Capacity; cupsTempFd (sb, length); name = sb.ToString (); tmpfile = name; } else name = settings.PrintFileName; PaperSize psize = default_page_settings.PaperSize; int width, height; if (default_page_settings.Landscape) { // Swap in case of landscape width = psize.Height; height = psize.Width; } else { width = psize.Width; height = psize.Height; } GdipGetPostScriptGraphicsContext (name, width * 72 / 100, height * 72 / 100, default_page_settings.PrinterResolution.X, default_page_settings.PrinterResolution.Y, ref graphics); DOCINFO doc = new DOCINFO (); doc.filename = name; doc.settings = settings; doc.default_page_settings = default_page_settings; doc_info.Add (graphics, doc); return graphics; }
public static Native ConvertToUnmanaged(DOCINFO managed) => new(managed);
public static extern int StartDoc(int hdc, [System.Runtime.InteropServices.In] ref DOCINFO lpdi);
public static extern Int32 StartDoc(IntPtr hdc, [MarshalAs(UnmanagedType.Struct)] ref DOCINFO lpdi);
internal static bool StartDoc (GraphicsPrinter gr, string doc_name, string output_file) { DOCINFO di = new DOCINFO (); int ret; di.cbSize = Marshal.SizeOf (di); di.lpszDocName = Marshal.StringToHGlobalUni (doc_name); di.lpszOutput = IntPtr.Zero; di.lpszDatatype = IntPtr.Zero; di.fwType = 0; ret = Win32StartDoc (gr.Hdc, ref di); Marshal.FreeHGlobal (di.lpszDocName); return (ret > 0) ? true : false; }