/// <summary> /// Print the data on printer. /// </summary> /// <param name="header">The header.</param> /// <param name="lines">The lines.</param> /// <param name="footer">The footer.</param> public void Print(string header, string lines, string footer) { string textToPrint = (header + lines + footer).Replace(OposHelper.EscMarker, OposHelper.EscCharacter); var parts = TextLogoParser.Parse(textToPrint); foreach (var part in parts) { if (part.TextType == TextType.LegacyLogo) { this.PrintLegacyLogo(); } if (part.TextType == TextType.LogoWithBytes) { this.PrintLogo(part.Value); } if (part.TextType == TextType.Text) { this.PrintText(part.Value); } } this.oposPrinter.CutPaper(100); }
/// <summary> /// Converts the OPOS formatted receipt into an xml Star WebPRNT request. /// </summary> /// <param name="data">OPOS receipt data.</param> /// <returns>Star WebPRNT request.</returns> private string ConvertToXml(string data) { if (string.IsNullOrWhiteSpace(data)) { return(data); } StringBuilder receipt = new StringBuilder(); var lines = data.Split(new[] { Environment.NewLine }, StringSplitOptions.None); foreach (var line in lines) { var textValues = line.Split(new[] { Seperator }, StringSplitOptions.RemoveEmptyEntries); foreach (var textValue in textValues) { bool bold = textValue.StartsWith(Bold, StringComparison.Ordinal); string textToPrint = textValue.StartsWith(CommandCharacter, StringComparison.Ordinal) ? textValue.Substring(CommandLength) : textValue; var fields = TextLogoParser.Parse(textToPrint); foreach (var field in fields) { switch (field.TextType) { case TextType.LegacyLogo: this.AppendLegacyLogo(receipt); break; case TextType.LogoWithBytes: this.AppendLogo(receipt, field.Value); break; case TextType.Text: this.AppendText(receipt, field.Value, bold); break; } } } receipt.Append(NewLine); } return(receipt.ToString()); }
/// <summary> /// Print the data on printer. /// </summary> /// <param name="header">The header.</param> /// <param name="lines">The lines.</param> /// <param name="footer">The footer.</param> public void Print(string header, string lines, string footer) { string textToPrint = header + lines + footer; if (!string.IsNullOrWhiteSpace(textToPrint)) { using (PrintDocument printDoc = new PrintDocument()) { printDoc.PrinterSettings.PrinterName = this.PrinterName; string subString = textToPrint.Replace(EscMarker, string.Empty); var printText = subString.Split(new string[] { Environment.NewLine }, StringSplitOptions.None); this.parts = new List <TextPart>(); foreach (var line in printText) { var lineParts = TextLogoParser.Parse(line); if (null != lineParts) { this.parts.AddRange(lineParts); } } this.printLine = 0; printDoc.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(this.PrintPageHandler); #if DEBUG if ("Microsoft XPS Document Writer" == this.PrinterName) { printDoc.PrinterSettings.PrintFileName = Path.Combine(Path.GetTempPath(), "HardwareStation_Print_Result.xps"); printDoc.PrinterSettings.PrintToFile = true; NetTracer.Information(string.Format(CultureInfo.InvariantCulture, "Look for XPS file here: {0}", printDoc.PrinterSettings.PrintFileName)); } #endif printDoc.Print(); } } }