Exemplo n.º 1
0
        /// <summary>
        /// Prints a single label.
        /// </summary>
        /// <param name="printerIpAddress">The printer ip address.</param>
        /// <param name="label">The label.</param>
        /// <param name="mergeFields">The merge fields.</param>
        /// <returns></returns>
        public static string PrintLabel(string printerIpAddress, string label, Dictionary <string, string> mergeFields = null)
        {
            var message = string.Empty;

            if (mergeFields == null)
            {
                mergeFields = new Dictionary <string, string>();
            }

            var socket = ZebraPrint.OpenSocket(printerIpAddress);

            string printContent = ZebraPrint.MergeLabelFields(label, mergeFields);

            if (socket.Connected)
            {
                ZebraPrint.Print(printContent, socket);
            }
            else
            {
                message = "NOTE: Could not connect to printer!";
            }

            // Close the socket
            if (socket != null && socket.Connected)
            {
                socket.Shutdown(SocketShutdown.Both);
                socket.Close();
            }

            return(message);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Prints the labels.
        /// </summary>
        /// <param name="labels">The labels.</param>
        /// <returns></returns>
        public static List <string> PrintLabels(List <CheckInLabel> labels)
        {
            var messages = new List <string>();

            Socket socket    = null;
            string currentIp = string.Empty;

            foreach (var label in labels
                     .OrderBy(l => l.PersonId)
                     .ThenBy(l => l.Order))
            {
                var labelCache = KioskLabel.Get(label.FileGuid);
                if (labelCache != null)
                {
                    if (!string.IsNullOrWhiteSpace(label.PrinterAddress))
                    {
                        if (label.PrinterAddress != currentIp)
                        {
                            if (socket != null && socket.Connected)
                            {
                                socket.Shutdown(SocketShutdown.Both);
                                socket.Close();
                            }

                            socket = ZebraPrint.OpenSocket(label.PrinterAddress);
                        }

                        string printContent = ZebraPrint.MergeLabelFields(labelCache.FileContent, label.MergeFields);

                        if (socket.Connected)
                        {
                            ZebraPrint.Print(printContent, socket);
                        }
                        else
                        {
                            messages.Add("NOTE: Could not connect to printer!");
                        }
                    }
                }
            }

            // Close the socket
            if (socket != null && socket.Connected)
            {
                socket.Shutdown(SocketShutdown.Both);
                socket.Close();
            }

            return(messages);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Prints the labels.
        /// </summary>
        /// <param name="labels">The labels.</param>
        /// <returns></returns>
        public static List <string> PrintLabels(List <CheckInLabel> labels)
        {
            var messages = new List <string>();

            Socket socket           = null;
            string currentIp        = string.Empty;
            bool   hasPrinterCutter = PrinterHasCutter(labels);
            int    labelCount       = 0;

            foreach (var label in labels.OrderBy(l => l.PersonId).ThenBy(l => l.Order))
            {
                labelCount++;

                var labelCache = KioskLabel.Get(label.FileGuid);
                if (labelCache != null)
                {
                    if (!string.IsNullOrWhiteSpace(label.PrinterAddress))
                    {
                        if (label.PrinterAddress != currentIp)
                        {
                            if (socket != null && socket.Connected)
                            {
                                socket.Shutdown(SocketShutdown.Both);
                                socket.Close();
                            }

                            socket = ZebraPrint.OpenSocket(label.PrinterAddress);
                        }

                        string printContent = ZebraPrint.MergeLabelFields(labelCache.FileContent, label.MergeFields).TrimEnd();

                        // If the "enable label cutting" feature is enabled, then we are going to
                        // control which mode the printer is in. In this case, we will remove any
                        // tear-mode (^MMT) commands from the content and add the cut-mode (^MMC).
                        if (hasPrinterCutter)
                        {
                            printContent = printContent.Replace("^MMT", string.Empty);

                            // Here we are forcing the printer into cut mode (because
                            // we don't know if it has been put into cut-mode already) even
                            // though we might be suppressing the cut below. This is correct.
                            printContent = printContent.ReplaceIfEndsWith("^XZ", "^MMC^XZ");

                            // If it's not the last label or a "ROCK_CUT" label, then inject
                            // a suppress back-feed (^XB) command which will also suppress the cut.
                            if (!(labelCount == labels.Count() || printContent.Contains("ROCK_CUT")))
                            {
                                printContent = printContent.ReplaceIfEndsWith("^XZ", "^XB^XZ");
                            }
                        }

                        if (socket.Connected)
                        {
                            ZebraPrint.Print(printContent, socket);
                        }
                        else
                        {
                            messages.Add("NOTE: Could not connect to printer!");
                        }
                    }
                }
            }

            // Close the socket
            if (socket != null && socket.Connected)
            {
                socket.Shutdown(SocketShutdown.Both);
                socket.Close();
            }

            return(messages);
        }