SupportedBarcodes.vb
C# VB
'''' This code is part of Document Solutions for Imaging demos.'' Copyright (c) MESCIUS inc. All rights reserved.''Imports SystemImports System.IOImports System.DrawingImports System.Collections.GenericImports GrapeCity.Documents.ImagingImports GrapeCity.Documents.TextImports GrapeCity.Documents.BarcodeImports GCTEXT = GrapeCity.Documents.Text
'' This example renders samples of all barcode symbologies supported by the Document Solutions Barcode library.Public Class SupportedBarcodes Public Function GenerateImageStream(targetMime As String, pixelSize As Size, dpi As Single, opaque As Boolean, Optional sampleParams As String() = Nothing) As Stream Dim bmp = New GcBitmap(pixelSize.Width, pixelSize.Height, opaque, dpi, dpi) Dim g = bmp.CreateGraphics(Color.White) Dim ms = New MemoryStream() Dim tw As GcTiffWriter = Nothing If targetMime = Util.MimeTypes.TIFF Then tw = New GcTiffWriter(ms) End If
Dim marginx As Single = dpi, marginy As Single = dpi / 2 Const padx As Single = 24, pady As Single = 4 Const gap As Single = 10 Dim ip = New PointF(marginx, marginy)
Dim tfCaption = New TextFormat() With { .Font = GCTEXT.Font.FromFile(Path.Combine("Resources", "Fonts", "NotoSans-Regular.ttf")), .FontSize = 14 } Dim tfBarcode = New TextFormat() With { .Font = tfCaption.Font, .FontSize = 6 } Dim barcode As New GcBarcode() With { .TextFormat = tfBarcode, .ScaleFactor = 2 } barcode.Options.CaptionPosition = BarCodeCaptionPosition.Below barcode.Options.SizeOptions.NarrowWideRatio = 0
Dim drawBarcode As Action(Of CodeType, String, String) = Sub(ct_, txt_, txt2_) Dim caption = $"{ct_}:{vbCrLf}{txt_}" If String.IsNullOrEmpty(txt2_) Then barcode.Options.GS1Composite.Type = GS1CompositeType.None Else caption &= $"{vbCrLf}Dependent CCA: {txt2_}" barcode.Options.GS1Composite.Type = GS1CompositeType.CCA barcode.Options.GS1Composite.Value = txt2_ End If barcode.Options.CheckSumEnabled = (ct_ <> CodeType.Code25intlv AndAlso ct_ <> CodeType.Code_2_of_5 AndAlso ct_ <> CodeType.Matrix_2_of_5) Dim csize = g.MeasureString(caption, tfCaption) barcode.CodeType = ct_ barcode.Text = txt_ Dim size = g.MeasureBarcode(barcode) size.Height = Math.Max(size.Height, csize.Height) Dim border = New RectangleF(ip, New SizeF(pixelSize.Width - marginx * 2, size.Height + pady * 2)) If ip.Y + border.Height > pixelSize.Height - marginy Then If tw Is Nothing Then Exit Sub tw.AppendFrame(bmp) bmp.Clear(Color.White) ip.Y = marginy ip = New PointF(marginx, marginy) border = New RectangleF(ip, border.Size) End If g.DrawRectangle(border, Color.Gray) g.DrawString(caption, tfCaption, New PointF(border.Left + padx, border.Top + pady)) g.DrawBarcode(barcode, New RectangleF(border.Right - size.Width - padx, border.Top + pady, size.Width, size.Height)) ip.Y = border.Bottom + gap End Sub
'' Barcode samples drawBarcode(CodeType.Ansi39, "*DSBARCODE*", Nothing) drawBarcode(CodeType.Ansi39x, "*DsImaging*", Nothing) drawBarcode(CodeType.Codabar, "A12041961D", Nothing) drawBarcode(CodeType.Code25intlv, "1234567890", Nothing) ''#2 Interleaved 2 of 5 (ITF) drawBarcode(CodeType.Code39, "*DSBARCODE*", Nothing) drawBarcode(CodeType.Code39x, "*DsImaging*", Nothing) drawBarcode(CodeType.Code49, "DsBarcode+DsImaging", Nothing) drawBarcode(CodeType.Code93x, "DsBarcode+DsImaging", Nothing) drawBarcode(CodeType.Code_93, "DSBARCODE", Nothing) drawBarcode(CodeType.Code_128_A, "DSIMAGING-2017", Nothing) drawBarcode(CodeType.Code_128_B, "DSIMAGING-2017", Nothing) drawBarcode(CodeType.Code_128_C, "1234567890", Nothing) drawBarcode(CodeType.Code_128auto, "DsImaging-2023", Nothing) drawBarcode(CodeType.Code_2_of_5, "1234567890", Nothing) drawBarcode(CodeType.DataMatrix, "DsBarcode+DsImaging", Nothing) drawBarcode(CodeType.QRCode, "DsBarcode+DsImaging", Nothing) drawBarcode(CodeType.EAN_8, "1234567", Nothing) drawBarcode(CodeType.EAN_13, "469" & "87654" & "3210", Nothing) drawBarcode(CodeType.EAN128FNC1, "DsBarcode" & vbLf & "DsImaging", Nothing) drawBarcode(CodeType.IntelligentMail, "00300999999000000001", Nothing) drawBarcode(CodeType.JapanesePostal, "TOKYO-10CC-09-1978", Nothing) drawBarcode(CodeType.PostNet, "152063949", Nothing) drawBarcode(CodeType.RM4SCC, "SE17PB9Z", Nothing) drawBarcode(CodeType.Matrix_2_of_5, "1234567890", Nothing) drawBarcode(CodeType.MSI, "1234567890", Nothing) drawBarcode(CodeType.MicroPDF417, "DsImaging", Nothing) drawBarcode(CodeType.Pdf417, "DsImaging", Nothing) drawBarcode(CodeType.RSS14, "1234567890", Nothing) drawBarcode(CodeType.RSS14Stacked, "1234567890", Nothing) drawBarcode(CodeType.RSS14Stacked, "1234567890", "12345") drawBarcode(CodeType.RSS14StackedOmnidirectional, "1234567890", Nothing) drawBarcode(CodeType.RSS14Truncated, "1234567890", Nothing) drawBarcode(CodeType.RSSExpanded, "12345678901234", Nothing) drawBarcode(CodeType.RSSExpandedStacked, "12345678901234", Nothing) drawBarcode(CodeType.RSSLimited, "1234567890", Nothing) drawBarcode(CodeType.RSSLimited, "1234567890", "12345") drawBarcode(CodeType.UCCEAN128, "DsBarcode+DsImaging", Nothing) drawBarcode(CodeType.UPC_A, "123456789012", Nothing) drawBarcode(CodeType.UPC_E0, "123456789012", Nothing) drawBarcode(CodeType.UPC_E1, "123456789012", Nothing)
Select Case targetMime Case Util.MimeTypes.TIFF tw.AppendFrame(bmp) tw.Dispose() Case Util.MimeTypes.JPEG bmp.SaveAsJpeg(ms) Case Util.MimeTypes.PNG bmp.SaveAsPng(ms) Case Util.MimeTypes.BMP bmp.SaveAsBmp(ms) Case Util.MimeTypes.GIF bmp.SaveAsGif(ms) Case Util.MimeTypes.WEBP bmp.SaveAsWebp(ms) Case Util.MimeTypes.ICO bmp.SaveAsIco(ms, Nothing, IcoFrameEncoding.Png) Case Else Throw New Exception($"Encoding {targetMime} is not supported.") End Select
bmp.Dispose() g.Dispose() Return ms End FunctionEnd Class