SupportedBarcodes.vb
''
'' このコードは、DioDocs for PDF のサンプルの一部として提供されています。
'' © MESCIUS inc. All rights reserved.
''
Imports System.IO
Imports System.Drawing
Imports System.Collections.Generic
Imports GrapeCity.Documents.Drawing
Imports GrapeCity.Documents.Pdf
Imports GrapeCity.Documents.Text
Imports GrapeCity.Documents.Barcode
'' ライブラリで出力可能なすべてのバーコードシンボルのサンプルを描画します。
Public Class SupportedBarcodes
Function CreatePDF(ByVal stream As Stream) As Integer
'' レイアウトパラメーター
Const margin = 72.0F / 2
Const pad = 4.0F
Const gap = 10.0F
Dim doc = New GcPdfDocument()
Dim page As Page = Nothing
Dim g As GcGraphics = Nothing
Dim ip As PointF
'' 新しいページの追加、挿入ポイントの初期位置を設定
Dim newPage As Action =
Sub()
page = doc.NewPage()
g = page.Graphics
ip = New PointF(margin, margin)
End Sub
newPage()
'' バーコードの名前と値を表示するためのTextFormat
Dim tfCaption = New TextFormat() With {
.Font = StandardFonts.Times,
.FontSize = 12
}
Dim tfBarcode = New TextFormat() With {
.Font = StandardFonts.Helvetica,
.FontSize = 9
}
'' バーコードインスタンス
'' 変更されないプロパティを設定
Dim barcode = New GcBarcode() With {
.TextFormat = tfBarcode,
.ScaleFactor = 1.5F
}
barcode.Options.CaptionPosition = BarCodeCaptionPosition.Below
barcode.Options.SizeOptions.NarrowWideRatio = 0
'' 指定バーコードタイプとオプションのCC-Aを使用してバーコードを描画
Dim drawBarcode As Action(Of CodeType, String, String) =
Sub(symboloty, value, cca)
Dim caption = $"{symboloty}:{vbCrLf}{value}"
If String.IsNullOrEmpty(cca) Then
barcode.Options.GS1Composite.Type = GS1CompositeType.None
Else
'' 複合コンポーネント A (CC-A) の指定
caption += $"{vbCrLf}Dependent CCA: {cca}"
barcode.Options.GS1Composite.Type = GS1CompositeType.CCA
barcode.Options.GS1Composite.Value = cca
End If
'' すべてのバーコードがチェックサムをサポートしているわけではありません
barcode.Options.CheckSumEnabled = symboloty <> CodeType.Code25intlv AndAlso symboloty <> CodeType.Code_2_of_5 AndAlso symboloty <> CodeType.Matrix_2_of_5
Dim csize = g.MeasureString(caption, tfCaption)
barcode.CodeType = symboloty
barcode.Text = value
Dim size = g.MeasureBarcode(barcode)
size.Height = Math.Max(size.Height, csize.Height)
Dim border = New RectangleF(ip, New SizeF(page.Size.Width - margin * 2, size.Height + pad * 2))
'' 必要に応じて新しいページを追加
If ip.Y + border.Height > page.Size.Height - margin Then
newPage()
border = New RectangleF(ip, border.Size)
End If
'' バーコードを描画
g.DrawRectangle(border, Color.Gray)
g.DrawString(caption, tfCaption, New PointF(border.Left + pad, border.Top + pad))
g.DrawBarcode(barcode, New RectangleF(border.Right - size.Width - pad, border.Top + pad, size.Width, size.Height))
ip.Y = border.Bottom + gap
End Sub
'' サポートされているすべてのバーコードシンボルを描画
drawBarcode(CodeType.Ansi39, "*DIODOCS*", Nothing)
drawBarcode(CodeType.Ansi39x, "*DioDocs*", Nothing)
drawBarcode(CodeType.Codabar, "A12041961D", Nothing)
drawBarcode(CodeType.Code25intlv, "1234567890", Nothing) '' Interleaved 2 of 5 (ITF)
drawBarcode(CodeType.Code39, "*GCBARCODE*", Nothing)
drawBarcode(CodeType.Code39x, "*DioDocs*", Nothing)
drawBarcode(CodeType.Code49, "MESCIUS+DioDocs", Nothing)
drawBarcode(CodeType.Code93x, "MESCIUS+DioDocs", Nothing)
drawBarcode(CodeType.Code_93, "GCBARCODE", Nothing)
drawBarcode(CodeType.Code_128_A, "DSPDF-2023", Nothing)
drawBarcode(CodeType.Code_128_B, "DSPdf-2023", Nothing)
drawBarcode(CodeType.Code_128_C, "1234567890", Nothing)
drawBarcode(CodeType.Code_128auto, "DsPdf-2023", Nothing)
drawBarcode(CodeType.Code_2_of_5, "1234567890", Nothing)
drawBarcode(CodeType.DataMatrix, "MESCIUS+DioDocs", Nothing)
drawBarcode(CodeType.QRCode, "メシウス DioDocs for PDF", Nothing)
drawBarcode(CodeType.EAN_8, "1234567", Nothing)
drawBarcode(CodeType.EAN_13, "469" + "87654" + "3210", Nothing)
drawBarcode(CodeType.EAN128FNC1, "MESCIUS\nDioDocs", Nothing)
drawBarcode(CodeType.IntelligentMail, "00300999999000000001", Nothing)
drawBarcode(CodeType.JapanesePostal, "9813205", 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, "DioDocs", Nothing)
drawBarcode(CodeType.Pdf417, "DioDocs", 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, "MESCIUS+DioDocs", Nothing)
drawBarcode(CodeType.UPC_A, "123456789012", Nothing)
drawBarcode(CodeType.UPC_E0, "123456789012", Nothing)
drawBarcode(CodeType.UPC_E1, "123456789012", Nothing)
''
'' PDF ドキュメントを保存します。
doc.Save(stream)
Return doc.Pages.Count
End Function
End Class