public Code128EncoderTests(ITestOutputHelper output) { _output = output; Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); _encoder = new Code128Encoder(new DefaultMapping(), EncodedCode128Factory.Default, Encoding.GetEncoding(1252)); }
public IActionResult GetBarcode(string data) { _logger.LogInformation("GetBarcode " + data); System.IO.File.WriteAllText(Environment.CurrentDirectory + @"/mydata/" + "file_" + DateTime.Now.Ticks + ".txt", data); var cachedString = _distributedCache.GetString("TEST"); if (string.IsNullOrEmpty(cachedString)) { _distributedCache.SetString("TEST", "somevaluetocache"); _logger.LogInformation("Was not found, ... but now set."); } else { _logger.LogInformation("Yeah, ... was found : " + cachedString); } var barcode = Code128Encoder.Encode(data, true); var renderer = new ImageRenderer(); var stream = new MemoryStream(); renderer.Render(barcode, stream); return(File(stream.ToArray(), "image/png")); }
public void Encode_EmptyString_ShouldThrowException() { Action action = () => Code128Encoder.Encode(string.Empty); action.Should().Throw <ArgumentException>() .And.Message.StartsWith("Content length should be between 1 and 80 but got 0"); }
public void Encode_ContentTooLong_ShouldThrowException() { Action action = () => Code128Encoder.Encode("123456789012345678901234567890123456789012345678901234567890123456789012345678901"); action.Should().Throw <ArgumentException>() .And.Message.StartsWith("Content length should be between 1 and 80 but got 81"); }
public void Interpret_WhenFeedingGeneratedCodes_InterpretsCorrectly() { var encoder = new Code128Encoder(new DefaultMapping(), EncodedCode128Factory.Default, Encoding.GetEncoding(1252)); var success = true; var content = TestCaseGenerator.GeneratePermutations(6); var sw = Stopwatch.StartNew(); var slice = content.Count / 8; Parallel.For(0, 8, i => { foreach (var str in content.Skip(i * slice).Take(slice)) { try { //_output.WriteLine($"Testing {str}"); var generated = encoder.Encode(str); var interpreted = _interpreter.Interpret(generated.ToPatternList()); Assert.Equal(str, interpreted); } catch (Exception e) { _output.WriteLine($"FAILED: {str}: {e}"); success = false; } } }); _output.WriteLine( $"{content.Count} tests run in {sw.Elapsed}. {sw.Elapsed.TotalMilliseconds / content.Count}ms per test"); Assert.True(success, "One or more cases failed."); }
public void Interpret_WhenParsingSpecialCase_InterpretsCorrectly(string input) { var encoder = new Code128Encoder(new DefaultMapping(), EncodedCode128Factory.Default, Encoding.GetEncoding(1252)); var generated = encoder.Encode(input); var interpreted = _interpreter.Interpret(generated.ToPatternList()); Assert.Equal(input, interpreted); }
public IActionResult GetBarcode(string data) { var barcode = Code128Encoder.Encode(data, true); var renderer = new ImageRenderer(); var stream = new MemoryStream(); renderer.Render(barcode, stream); return(File(stream.ToArray(), "image/png")); }
public void Render_Barcode1D() { // Arrange var renderer = new ImageRenderer(); IBarcode barcode = Code128Encoder.Encode("Wikipedia"); // Act byte[] data = RenderBarcodeToByteArray(renderer, barcode); // Assert data.Should().NotBeNull(); }
public void Render_Barcode1D() { // Arrange var renderer = new SvgRenderer(); IBarcode barcode = Code128Encoder.Encode("Wikipedia"); string expected = GetExpectedSvgOutput("Code128.ExpectedSvgOutput.txt"); // Act string svg = RenderBarcodeToString(renderer, barcode); // Assert svg.Length.Should().BeGreaterOrEqualTo(0); svg.Should().Be(expected); }
public void Encode_ShouldUseATable() { bool result; bool T(byte currentEncoding, params char[] nextChars) => Code128Encoder.ShouldUseATable(nextChars, currentEncoding); result = T(0, '\r', 'A'); result.Should().BeTrue(); result = T(0, Constants.FNC1, '\r'); result.Should().BeTrue(); result = T(0, Constants.FNC1, '1', '2', '3'); result.Should().BeFalse(); }
public static byte[] GerarCodBarras128(this string codbar, int?heigthPng = null) { if (string.IsNullOrWhiteSpace(codbar)) { throw new Exception("Código de barras não informado"); } var bar = Code128Encoder.Encode(codbar); var render = new ImageRenderer(barHeightFor1DBarcode: heigthPng ?? 25); using (var ms = new MemoryStream()) { render.Render(bar, ms); return(ms.ToArray()); } }
"1100011101011")] // STOP public void Encode(string txt, string testResult) { IBarcodeIntCS code = Code128Encoder.Encode(txt); code.Bounds.X.Should().Be(testResult.Length); code.Bounds.Y.Should().Be(1); code.Metadata.CodeKind.Should().Be(BarcodeType.Code128); code.Metadata.Dimensions.Should().Be(1); string encoded = string.Empty; int i = 0; foreach (var r in testResult) { encoded += code.At(i++, 0) ? "1" : "0"; } encoded.Should().Be(testResult); }
private void GenerateBarcode(string path) { IBarcodeEncoder enc = new Code128Encoder(); enc.Text = "123456"; BarcodeRenderMode mode = BarcodeRenderMode.None; mode |= BarcodeRenderMode.Numbered; enc.Sizer.Mode = mode; enc.Sizer.DPI = 0; IBarcodeGenerator gen = enc.Generator; Bitmap bmp = gen.GenerateBarcode(new Size(68, 40)); bmp.Save(_path, System.Drawing.Imaging.ImageFormat.Jpeg); }
public void Encode_ShouldUseCTable() { bool result; bool T(byte currentEncoding, params char[] nextChars) => Code128Encoder.ShouldUseCTable(nextChars, currentEncoding); result = T(Constants.StartCSymbol, Constants.FNC1, '1', '2'); result.Should().BeTrue(); result = T(Constants.StartCSymbol, Constants.FNC1, '1'); result.Should().BeFalse(); result = T(Constants.StartCSymbol, '0', Constants.FNC1, '1'); result.Should().BeFalse(); result = T(Constants.StartBSymbol, '0', '1', Constants.FNC1, '2', '3'); result.Should().BeTrue(); result = T(Constants.StartBSymbol, '0', '1', Constants.FNC1); result.Should().BeFalse(); }
public string Calculate(string data) { char currCode = Code128Encoder.ResolveStartCode(data[0]); // start character int sum = Code128Encoder.SymbolValue(data[0].ToString(), currCode); for (int i = 1, pos = 1; i < data.Length; ++i, ++pos) { string curr = data[i].ToString(); int value = 0; if (currCode == Code128Encoder.CodeC && char.IsNumber(data[i])) { value = Code128Encoder.SymbolValue(curr + data[++i].ToString(), currCode); } else { value = Code128Encoder.SymbolValue(curr, currCode); } sum += pos * value; // detect change in current code switch (data[i]) { case Code128Encoder.CodeA: case Code128Encoder.CodeB: case Code128Encoder.CodeC: currCode = data[i]; break; } } return(Code128Encoder.SymbolString(sum % 103, currCode)); }
/// <summary> /// Encodes an HIBC primary data string. /// </summary> /// <param name="primary">The primary data string, consisting of the LIC, the PCN, and the unit of measure digit.</param> /// <param name="secondary">An optional <see cref="Barcodes.HIBC.SecondaryData"/> object containing secondary data.</param> /// <param name="primaryMode">The symbology to use for the primary barcode. Must be <see cref="Barcodes.HIBC.PrimaryEncodingMode.Code39"/> or <see cref="Barcodes.HIBC.PrimaryEncodingMode.Code128"/>.</param> /// <param name="secondaryMode">The symbology to use for the secondary barcode. May be any <see cref="Barcodes.HIBC.SecondaryEncodingMode"/> value other than <see cref="Barcodes.HIBC.SecondaryEncodingMode.EAN128"/>, however, /// if <paramref name="secondary"/> is null, this value must be <see cref="Barcodes.HIBC.SecondaryEncodingMode.None"/>.</param> /// <returns>An array of <see cref="Barcodes.IBarcodeEncoder"/> objects, containing one or two pre-set encoders.</returns> /// <remarks>This is the same function as <see cref="Barcodes.HIBC.HIBCEncoder.EncodeHIBC(string, SecondaryData, PrimaryEncodingMode, SecondaryEncodingMode)"/>, except /// that the primary data (LIC, PCN, and Unit of Measure) is combined into one parameter in the alternate method.</remarks> /// <exception cref="System.ArgumentException">There was an error in the primary data.</exception> /// <exception cref="System.InvalidOperationException">The <paramref name="primaryMode"/> or <paramref name="secondaryMode"/> /// values are invalid for the type of data provided (HIBC vs. GS1).</exception> /// <exception cref="System.NullReferenceException">Argument <paramref name="secondary"/> is null and <paramref name="secondaryMode"/> is not <see cref="Barcodes.HIBC.SecondaryEncodingMode.None"/>.</exception> public static IBarcodeEncoder[] EncodeHIBC(string primary, SecondaryDataHibc secondary, PrimaryEncodingMode primaryMode, SecondaryEncodingMode secondaryMode) { if (primaryMode == PrimaryEncodingMode.EAN128 || primaryMode == PrimaryEncodingMode.I2of5) { throw new InvalidOperationException("The primary mode can only be Code39 or Code128."); } if (secondaryMode == SecondaryEncodingMode.EAN128) { throw new InvalidOperationException("The secondary mode can only be Code39, Code128, Combined, or None."); } if (secondaryMode != SecondaryEncodingMode.None && secondary == null) { throw new NullReferenceException("The secondary encoding mode is not None and secondary is null."); } Regex primaryCheck = new Regex("[A-Z][A-Z0-9]{3}[A-Z0-9]{1,13}[0-9]"); primary = primary.ToUpper(); if (!primaryCheck.IsMatch(primary)) { throw new ArgumentException("The specified primary data string (LIC+PCN+Unit) is invalid. The proper format is [A-Z][A-Z0-9]{3}[A-Z0-9]{1,13}[0-9].", "primary"); } primary = "+" + primary; byte checkSum = CalculateHIBCCheck(primary); string secondaryEncoding = ""; if (secondary != null) { if (secondary.HIBCShortEncoded != null) { secondaryEncoding = secondary.HIBCShortEncoded; } else { secondaryEncoding = secondary.HIBCEncoded; } } if (secondaryMode == SecondaryEncodingMode.Combined) { primary = primary + "/" + secondaryEncoding.Substring(1); checkSum = CalculateHIBCCheck(primary); primary += "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%"[checkSum]; } else { char checkChar = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%"[checkSum]; primary += checkChar; secondaryEncoding += checkChar; checkSum = CalculateHIBCCheck(secondaryEncoding); secondaryEncoding += "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%"[checkSum]; } IBarcodeEncoder primaryEncoder, secondaryEncoder; if (primaryMode == PrimaryEncodingMode.Code39) { primaryEncoder = new Code39Encoder(); primaryEncoder.Text = primary; ((Code39Generator)primaryEncoder.Generator).Text = "*" + primary.Replace(' ', '_') + "*"; } else //Code 128 { primaryEncoder = new Code128Encoder(); primaryEncoder.Text = primary; ((Code128Generator)primaryEncoder.Generator).Text = "*" + primary.Replace(' ', '_') + "*"; } if (secondaryMode == SecondaryEncodingMode.Combined || secondaryMode == SecondaryEncodingMode.None) { return new IBarcodeEncoder[] { primaryEncoder } } ; if (secondaryMode == SecondaryEncodingMode.Code39) { secondaryEncoder = new Code39Encoder(); secondaryEncoder.Text = secondaryEncoding; ((Code39Generator)secondaryEncoder.Generator).Text = "*" + secondaryEncoding.Replace(' ', '_') + "*"; } else { secondaryEncoder = new Code128Encoder(); secondaryEncoder.Text = secondaryEncoding; ((Code128Generator)secondaryEncoder.Generator).Text = "*" + secondaryEncoding.Replace(' ', '_') + "*"; } return(new IBarcodeEncoder[] { primaryEncoder, secondaryEncoder }); }
public void Encode_WhenUsingEscPosSetup_CanEncodeExample() { var code = new Code128Encoder(new EscPosMapping(), EncodedCode128Factory.EscPos).Encode("No. 123456"); Assert.Equal(new byte[] { 123, 66, 78, 111, 46, 32, 123, 67, 12, 34, 56 }, code.FullData); }