Пример #1
0
        /// <summary>
        /// Zpl Download Graphics
        /// </summary>
        /// <param name="storageDevice"></param>
        /// <param name="imageName"></param>
        /// <param name="imageData"></param>
        /// <param name="isCompressionActive"></param>
        /// <param name="imageConverter"></param>
        public ZplDownloadGraphics(
            char storageDevice,
            string imageName,
            byte[] imageData,
            bool isCompressionActive       = true,
            IImageConverter imageConverter = default)
            : base(storageDevice)
        {
            if (imageName.Length > 8)
            {
                new ArgumentException("maximum length of 8 characters exceeded", nameof(imageName));
            }

            _extension = "GRF"; //Fixed

            ImageName = imageName;
            ImageData = imageData;

            if (imageConverter == default)
            {
                imageConverter = new ImageSharpImageConverter();
            }

            _isCompressionActive = isCompressionActive;
            _imageConverter      = imageConverter;
        }
Пример #2
0
        public override ZplElementBase Analyze(string zplCommand)
        {
            var storageDevice = zplCommand[this.PrinterCommandPrefix.Length];

            var zplDataParts = this.SplitCommand(zplCommand, 2);

            var imageName = zplDataParts[0];

            _ = int.TryParse(zplDataParts[1], out var totalNumberOfBytesInGraphic);
            _ = int.TryParse(zplDataParts[2], out var numberOfBytesPerRow);

            //third comma is the start of the image data
            var indexOfThirdComma = this.IndexOfNthCharacter(zplCommand, 3, ',');
            var dataHex           = zplCommand.Substring(indexOfThirdComma + 1);

            var grfImageData = ByteHelper.HexToBytes(dataHex);

            if (grfImageData.Length != totalNumberOfBytesInGraphic)
            {
                dataHex      = ZebraHexCompressionHelper.Uncompress(dataHex, numberOfBytesPerRow);
                grfImageData = ByteHelper.HexToBytes(dataHex);
            }

            var converter = new ImageSharpImageConverter();
            var imageData = converter.ConvertImage(grfImageData, numberOfBytesPerRow);

            this._printerStorage.AddFile(storageDevice, imageName, imageData);

            return(null);
        }
Пример #3
0
        public override ZplElementBase Analyze(string zplCommand)
        {
            var x           = 0;
            var y           = 0;
            var bottomToTop = false;

            if (this.VirtualPrinter.NextElementPosition != null)
            {
                x = this.VirtualPrinter.NextElementPosition.X;
                y = this.VirtualPrinter.NextElementPosition.Y;

                bottomToTop = this.VirtualPrinter.NextElementPosition.CalculateFromBottom;
            }

            var zplDataParts = this.SplitCommand(zplCommand);

            var compressionType   = zplDataParts[0][0];
            var binaryByteCount   = 0;
            var graphicFieldCount = 0;
            var bytesPerRow       = 0;

            if (zplDataParts.Length > 1)
            {
                _ = int.TryParse(zplDataParts[1], out binaryByteCount);
            }
            if (zplDataParts.Length > 2)
            {
                _ = int.TryParse(zplDataParts[2], out graphicFieldCount);
            }
            if (zplDataParts.Length > 3)
            {
                _ = int.TryParse(zplDataParts[3], out bytesPerRow);
            }

            //fourth comma is the start of the image data
            var indexOfFourthComma = this.IndexOfNthCharacter(zplCommand, 4, ',');
            var dataHex            = zplCommand.Substring(indexOfFourthComma + 1);

            if (dataHex.Length != binaryByteCount * 2)
            {
                dataHex = ZebraHexCompressionHelper.Uncompress(dataHex, bytesPerRow);
            }

            var grfImageData = ByteHelper.HexToBytes(dataHex);
            var converter    = new ImageSharpImageConverter();
            var imageData    = converter.ConvertImage(grfImageData, bytesPerRow);

            dataHex = ByteHelper.BytesToHex(imageData);

            return(new ZplGraphicField(x, y, binaryByteCount, graphicFieldCount, bytesPerRow, dataHex, bottomToTop: bottomToTop, compressionType));
        }