DioDocs for PDF
PDF でのバーコード
このトピックの内容:

テキスト、画像、テーブル、注釈などの他に、バーコードを PDF ドキュメントに追加する必要がある場合もあります。バーコードは、在庫管理、発券システム、広告、請求書、出荷ラベルなどの PDF を作成する場合に役立ちます。

DioDocs for PDF は、GrapeCity.Documents.Barcode 名前空間にある GcBarcode クラスを通じてバーコードをサポートします。この名前空間は、バーコード関連のメソッドとプロパティだけを含む独立したアセンブリ GrapeCity.Documents.Barcode.dll に属しています。 GcBarcode 参照は、GrapeCity.Documents.BarCode という名前の NuGet パッケージから入手できます。また、GrapeCity.Documents.Barcode.dll は DioDocs for PDF に含まれていないため、DioDocs for PDF と GcBarcode の間に依存関係はありません。 このアセンブリは、GcGraphics に拡張メソッドを追加するだけです。これにより、GcPdfGraphics などの任意の GcGraphics 実装にバーコードを描画できるようになります。

サポートされているバーコードシンボル

DioDocs for PDF では、38 種類のバーコードシンボル(1 次元および 2 次元)が提供されています。これらのコードタイプについて、次の表で説明します。GcBarCode アセンブリで提供される CodeType プロパティは、CodeType 列挙から値を受け取り、バーコードのタイプを以下にリストしたバーコードタイプのいずれかに設定します。

バーコードタイプ 説明
Ansi39 ANSI 3 of 9(Code 39)は、大文字、数字、- , * $ / + % を使用します。これがデフォルトのバーコードスタイルです。
Ansi39x ANSI Extended 3 of 9(Extended Code 39)は、ASCII 文字セット全体を使用します。
Bc412 BC412 バーコードは、半導体ウエハー識別アプリケーションのニーズに応えるために IBM によって考案されました。
Codabar Codabar は、A B C D + - : . / および数字を使用します。
Code11 Code11(USD-8 とも呼ばれる)は、1977 年に Intermec によって開発された高密度のバーコードシンボルです。主に、通信機器のラベルに使用されています。このシンボルは分離型で、0〜9 の数字、ダッシュ(-)、スタート/ストップキャラクタをエンコードできます。
Code_128_A Code 128 A は、制御文字、数字、句読点、大文字を使用します。
Code_128_B Code 128 B は、数字、句読点、大文字、小文字を使用します。
Code_128_C Code 128 C は数字だけを使用します。
Code_128auto Code 128 Auto は、ASCII 文字セット全体を使用します。最小のバーコードになるように、Code 128 A、B、および C から 1 つが自動的に選択されます。
Code_2_of_5 Code 2 of 5 は数字だけを使用します。
Code93 Code 93 は、大文字、数字、% $ * / , + - を使用します。
Code25intlv Interleaved 2 of 5 は数字だけを使用します。
Code39 Code 39 は、大文字、数字、% * $ /. , - + を使用します。
Code39x Extended Code 39 は、ASCII 文字セット全体を使用します。
Code49 Code 49 は、各段 8 文字の 2 〜 8 段から成る 2 次元高密度スタック型バーコードです。各段には、スタートコードとストップコードが含まれます。ASCII 文字セット全体をエンコードします。
Code93x Extended Code 93 は、ASCII 文字セット全体を使用します。
DataMatrix Data Matrix は、正方形または長方形のマトリックスパターンに並べられた正方形モジュールから成る 2 次元高密度バーコードです。
EAN_13 EAN-13 は、数字(12 個の数字とチェックデジット)だけを使用します。12 個の数字だけを文字列として受け取ってチェックデジット(CheckSum)を計算し、それを 13 番目の位置に追加します。13 個の数字がある場合は、チェックサムを検証し、それが正しくない場合はエラーを生成します。
EAN_8 EAN-8 は、数字(7 個の数字とチェックデジット)だけを使用します。
EAN128FNC1 EAN-128 は、運送業で梱包物を識別するためのアプリケーション識別子(AI)データの 1 次元英数字表現です。

このタイプのバーコードには、以下のセクションが含まれています。

  • 先頭のクワイエットゾーン(空白領域)
  • Code 128 のスタート文字
  • スキャナに EAN-128 バーコードであることを識別させる FNC(ファンクション)1 文字
  • データ(AI + データフィールド)
  • シンボルチェック文字(「スタートコード値 + 各文字位置と各文字値の積」を 103 で除算。この剰余値がチェックサム)。
  • ストップ文字
  • 末尾のクワイエットゾーン(空白領域)

データセクションの AI は、後に続くデータのタイプ(ID、日付、数量、計量単位など)を設定します。データのタイプごとに固有のデータ構造があります。この AI があることが、EAN-128 コードが Code 128 と異なる点です。

1 つのバーコードで複数の AI(およびそのデータ)を組み合わせることができます。

EAN128FNC1 は UCC/EAN-128(EAN128)バーコードタイプの 1 つで、任意の場所に FNC1 文字を挿入したり、バーサイズを調整することができるなど、UCC/EAN-128 にはない機能をサポートしています。

FNC1 文字を挿入するには、実行時に Text プロパティに "\n"(C# の場合)または "vbLf"(VB の場合)を設定します。

HIBCCode128 HIBCCode128 は医療産業バーコード 128 の実装です。
HIBCCode39 HIBCCode39 は医療産業バーコード 39 の実装です。
Iata25 IATA 2 of 5 バーコードを表します。
IntelligentMail Intelligent Mail(以前の 4-State Customer Barcode)は、米国内の郵便に使用される 65 本のバーコードです。
IntelligentMailPackage インテリジェント郵便小包バーコード(IMPB:Intelligent Mail Package Barcode)。
ISBN 国際標準図書番号(ISBN)は、市販の書籍に使用される特別な識別子で、「978」または「979」の開始番号に加えて 9 桁の数値をエンコードします。
ISMN 国際標準楽譜番号(ISMN、ISO 10957)は、ISO によって開発され、楽譜出版物に使用される英数字 13 文字の識別子です。
ISSN 国際標準逐次刊行物番号(ISSN)は、定期的に刊行される雑誌などの印刷物または電子出版物に使用される 8 桁の数値です。この ISSN システムは、1971 年に国際標準として起草され、1975 年に ISO 3297 として発行されました。
ITF14 ITF14 バーコードは、GTIN(国際取引商品番号)をエンコードする Interleaved 2 of 5 バーコードの GS1 実装です。連続型のバーコードで、セルフチェック機能を持ち、双方向にデコード可能です。また、常に 14 桁をエンコードします。ITF14 は、一般に、製品の梱包段階で使用されます。
JapanesePostal これは、日本の郵便制度で使用されるバーコードです。20 桁の英数字をエンコードします。これには、7 桁の郵便番号の後に、必要に応じて番地や部屋番号などの情報が含まれます。エンコードするデータにはハイフンを含めることができます。
Matrix_2_of_5 Matrix 2 of 5 は、3 本の黒バーと 2 本の白バーから成る比較的高密度のバーコードです。
MicroPDF417

MicroPDF417 は、PDF417 から派生された 2 次元多段バーコードです。Micro-PDF417 は、データをできる限り小さなサイズの 2 次元シンボル(最大 150 バイト、英数字 250 文字、数字 366 桁)にエンコードする必要があるアプリケーション用に設計されています。

MicroPDF417 では、可変長のアプリケーション識別子(AI)のフィールド区切り文字として FNC1 文字を挿入することができます。

FNC1 文字を挿入するには、実行時に Text プロパティに "\n"(C# の場合)または "vbLf"(VB の場合)を設定します。

MicroQRCode

MicroQRCode は、QR コード 2005 の一種です。他の通常の QR コードと比べると、位置検出パターンが 1 つしかなく、バーコードサイズが小さいため、バーコード画像のスペースに厳しい制約があるアプリケーションで使用できます。

MSI MSI Code は数字だけを使用します。
Pdf417 Pdf417 は、よく使用されている 2 次元高密度バーコードです。最大 1,108 バイトの情報をエンコードできます。このバーコードは、小さなバーコードを積み重ねて構成されます。ASCII 文字セット全体をエンコードします。10 のエラー修正レベルと 3 つのデータコンパクションモード(Text、Byte、および Numeric)があります。このバーコードは最大 2,725 データ文字をエンコードできます。
Pharmacode Pharmacode(製薬バイナリコードとも呼ばれる)は、製薬業界で包装制御システムとして使用される 1 次元バーコードのバーコード標準です。
Plessey MSI バーコード(Modified Plessey とも呼ばれる)は、MSI Data Corporation によって開発された数字シンボルで、主に在庫管理用の商品棚のマーキングに使用されます。MSI Plessey は連続型でセルフチェック機能を持ちますが、複数のモジュールチェックサム状態を提供します。
PostNet PostNet は、数字とチェックデジットを使用します。
PZN PZN(Pharma-Zentral-Nummer)は、ドイツの製薬業界で医薬品およびヘルスケア製品を識別するために使用されるバーコード標準です。
QRCode QRCode は、英数字やバイトデータに加えて、日本語の漢字やかな文字も扱うことができる 2 次元バーコードです。このバーコードは最大 7,366 文字をエンコードできます。
RM4SCC Royal Mail RM4SCC は、文字と数字(チェックデジット付き)だけを使用します。これは、イギリスのロイヤルメールで使用されるバーコードです。
RSS14 RSS14 は、コンポジットコンポーネント(CC)で拡張された EAN および UPC 情報を小さなスペースにエンコードできる 14 桁の省スペースシンボル(Reduced Space Symbology:RSS)のです。このバージョンは、全方向型 POS スキャナと共に使用される EAN.UCC 品目識別用です。
RSS14Stacked RSS14Stacked シンボルは、CC で拡張された EAN および UPC 情報を小さなスペースにエンコードします。このバージョンは、RSS14Truncated では幅が広過ぎる場合に 2 段に積み重ねられること以外は、RSS14Truncated と同じです。
RSS14Stacked では合成オプションを設定できます。[タイプ]ドロップダウンリストからバーコードのタイプを選択し、[値]フィールドで合成バーコードの値を指定できます。
RSS14StackedOmnidirectional RSS14StackedOmnidirectional シンボルは、CC で拡張された EAN および UPC 情報を小さなスペースにエンコードします。このバージョンは、RSS14 では幅が広過ぎる場合に 2 段に積み重ねられること以外は、RSS14 と同じです。
RSS14Truncated RSS14Truncated シンボルは、CC で拡張された EAN および UPC 情報を小さなスペースにエンコードします。このバージョンは、小さな品目に使用される、0 または 1 のインジケータデジット付きの 14 桁の EAN.UCC 品目識別用です。POS スキャナ用ではありません。
RSSExpanded

RSSExpanded シンボルは、CC で拡張された EAN および UPC 情報を小さなスペースにエンコードします。このバージョンは、全方向型 POS スキャナと共に使用される、AI 要素文字列(重量、賞味期限など)付きの 14 桁の EAN.UCC 品目識別用です。

RSSExpanded では、可変長のアプリケーション識別子(AI)のフィールド区切り文字として FNC1 文字を挿入することができます。

FNC1 文字を挿入するには、実行時に Text プロパティに "\n"(C# の場合)または "vbLf"(VB の場合)を設定します。

RSSExpandedStacked

RSSExpandedStacked シンボルは、CC で拡張された EAN および UPC 情報を小さなスペースにエンコードします。このバージョンは、RSSExpanded では幅が広過ぎる場合に 2 段に積み重ねられること以外は、RSSExpanded と同じです。

RSSExpandedStacked では、可変長のアプリケーション識別子(AI)のフィールド区切り文字として FNC1 文字を挿入することができます。

FNC1 文字を挿入するには、実行時に Text プロパティに "\n"(C# の場合)または "vbLf"(VB の場合)を設定します。

RSSLimited RSSLimited シンボルは、CC で拡張された EAN および UPC 情報を小さなスペースにエンコードします。このバージョンは、0 または 1 のインジケータデジット付きの 14 桁の EAN.UCC 品目識別用です。POS スキャナでスキャンされない小さなシンボルに使用されます。
RSSLimited では合成オプションを設定できます。[タイプ]ドロップダウンリストからバーコードのタイプを選択し、[値]フィールドで合成バーコードの値を指定できます。
SSCC18 18 桁のシリアル梱包番号(SSCC-18)バーコードは、サーマル 4" x 8" または 4" x 8?"(またはローカル単位で相当する長さ)のラベルの下側 2 インチ(またはローカル単位で相当する長さ)の余白に印刷することができるタイプのバーコードです。
Telepen Telepen は、コード切り替えのためのシフト文字を使用せずに、2 種類の幅のバーとスペースだけを使用して ASCII 文字セットすべてを直接表すバーコードシンボルで、1972 年に英国で設計されました。
UCCEAN128 UCC/EAN ?128 は、ASCII 文字セット全体を使用します。HIBC アプリケーションで使用される特殊な Code 128 です。
UPC_A UPC-A は、数字(11 個の数字とチェックデジット)だけを使用します。
UPC_E0 UPC-E0 は数字だけを使用します。Zero Suppression の UPC シンボルに使用されます。Caption プロパティには、6 桁の UPC-E コードまたは完全な 11 桁(必須のコードタイプ 0 を含む)の UPC-A コードを入力する必要があります。11 桁のコードが入力された場合、バーコードコントロールは、可能であればそれを 6 桁の UPC-E コードに変換します。11 桁のコードを 6 桁のコードに変換できない場合は、何も表示されません。
UPC_E1 UPC-E1 は数字だけを使用します。主に小売業界で在庫ラベルに使用されます。UPC-E1 の入力文字列の長さは数字 6 個です。
先頭に戻る

バーコードのプロパティ

GcBarcode クラスには、すべてのバーコードタイプに共通の以下のプロパティが用意されています。

プロパティ 説明
CodeType バーコードエンコーディングを設定できます。
HorizontalAlignment バーコードの水平方向の配置を設定できます。
Options 追加のバーコードオプションを定義する BarcodeOptions オブジェクトを取得します。
ScaleFactor バーコード画像に適用される拡大縮小率を設定できます。
Text バーコードにエンコードする値を指定できます。
TextFormat バーコードラベルを描画するテキストを書式設定できます。
VerticalAlignment バーコードの垂直方向の配置を設定できます。
先頭に戻る

バーコードの追加

DioDocs for PDF を使用してバーコードを追加するには

  1. GcBarcode クラスのオブジェクトを作成します。
  2. GcBarcode オブジェクトの必要なプロパティを設定します。
  3. GcPdfGraphics クラスで提供される DrawBarcode メソッドを使用して、バーコードを描画します。
Barcode.cs
コードのコピー
public void CreatePDF(Stream stream)
   {
      GcPdfDocument doc = new GcPdfDocument();
      var page = doc.NewPage();
      var g = page.Graphics;
      GcBarcode barcode = new GcBarcode()
      {
        CodeType = CodeType.QRCode,
        Text = "QR Code",
      };
      
      var tfBarcode = new TextFormat()
      {
          Font = StandardFonts.Helvetica,
          FontSize = 9,
      };
      barcode.TextFormat = tfBarcode;
      
      barcode.Options.TextAlign = TextAlignment.Center;
      barcode.Options.QRCode.ConnectionNumber = 123456;
      
      var sz = g.MeasureBarcode(barcode);
      g.DrawBarcode(barcode, new RectangleF(72/2, 72/2, sz.Width, sz.Height));
      doc.Save(stream);
    }
先頭に戻る

DioDocs for PDF でのバーコード実装の詳細については、DioDocs for PDF サンプルブラウザを参照してください。