/// <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);
            }
Exemple #2
0
            /// <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();
                    }
                }
            }