Top > OOobbs2 > 81

OOobbs2/81 Edit

  • サマリ: 郵便のカスタマーバーコードを OOo で
  • 環境: General
  • 状態: 投稿
  • 投稿者: はにゃ??
  • 投稿日: 2007-10-31 (水) 18:58:06

質問 Edit

バーコードを利用するには OOoMacros にある OOoBarcode (GNU Barcode を利用する) 方法があるが、日本の郵便のカスタマーバーコードには利用できない。英国で利用されているものと同じ(?)らしいが、住所からバーコードデータを取得する必要があるので日本語が処理できないと使えない。

フォント Edit

カスタマーバーコード用フォントは商用は多数存在するらしい。フリーのものもある。しかし、どうやら文字コードと記号の割り当てが決まっていないため適合しないと使えないことになる。

そのため、新しく作成する。調べてみると、あるプリンターの文字コードと記号の表があったのでこれと同じ配置にする (別のものとも一致しているので)。

フォントの作成は FontForge

  • 10pt で印刷したときに丁度よいサイズになるように
    フォント深さ+フォント高さ

font-1.png

文字コードと配置

font-2.png

Dec, HEX: ascii コード, CHR: 一般的なフォントでの文字, CB: CB での記号, CBC: CB での値, CN: check digit 計算時の値

filenycbf_code.ods

10 pt に設定したときのサイズ

font-3.png

サービス Edit

郵便番号と住所からカスタマーバーコード (以下 CB) を生成するサービスを作成。

  • サービス名
    • mytools.Nycb
  • インターフェース
    • mytools.XConvert
  • XConvert インターフェースのメソッド
    • string convert( [in] string aPostalCode, [in] string aAddress )
      文字列で 郵便番号 aPostalCode、住所 aAddress を与えると上記フォントのコードに対応した CB 文字列を戻す。

使い方 Edit

サービスを利用した変換

OOo Basic で書くと

sPostalCode = "123-4567"
sAddress = "3丁目30-8 郵便ビル403号"
oNycb = CreateUnoService("mytools.Nycb")
sCBCode = oNycb.convert( sPostalCode, sAddress )

郵便番号にハイフンが含まれていても、いなくてもどちらでもよい。住所は県名などが含まれていても問題ない。住所のみから生成はできません。

複数のものを変換するときには一度インスタンス化したサービスを何度も利用できます。

For i = 0 To 10
  sCode = oNycb.convert( ....
Next i

下記のテスト用ファイルに上記を利用した OOo Basic のマクロが含まれています。

Calc 関数 Edit

Calc 上で利用できる (実際はどこでも利用できる) 関数を作成。変換は上記サービスと同じでよいので、クラスを Calc AddIn として利用できるようなものを別に作成。

  • サービス名
    • mytools.sheet.addin.NycbAddInFn
  • インターフェース
    • mytools.sheet.addin.XNycbAddInFn
    • メソッド (関数)
      • string nycb( [in] string aPostalCode, [in] string aAddress )

使い方 Edit

セルに普通の関数と同様に入力します。

=NYCB(A1;B1)

一つ目の引数: 郵便番号を文字列で、二つ目の引数: 住所を文字列で指定します。もちろんセルを参照できます。 関数の結果は同じセルに (26300233-30-8-403DDD5) などのように表示されるので、上記フォント (nycbf) をセルに設定してやるとコードが表示されます。

ファイル Edit

※ライセンス: ライセンス事項はありませんが、保障もありません。読み取れないコードが生成されたり、PC などに悪影響があったとしても責任を取る人はいません。

  • フォント
    • このフォントを利用して正しく読み取れるコードが印刷できるかどうか未確認です。
    • filenycbf.zip
  • サービス拡張機能ファイル
  • テスト用ファイル (サービス、AddIn 関数共用)

インストール Edit

フォント Edit

nycbf.zip ファイルを解凍し、nycbf.ttf を環境に応じてインストール。同梱の nycbf.sfd ファイルは FontForge 用のファイルで、フォントを変更したい方以外は不要です。

フォント名は nycbf です。指定するときは前述をフォント名として設定してください。また、10 pt に設定したとき許容範囲内に収まるように作成されています。ですが、環境に応じて微調整が必要なこともあります。

サービス Edit

※OOo 2.x 以降に Py-UNO がインストールされていないと動作しません。

nycb.oxt ファイルを OOo のツール - 拡張機能マネージャからインストールしてください。インストール後は OOo を再起動する必要があります。

AddIn 関数 Edit

※OOo 2.x Py-UNO がインストールされていないと動作しません。

NycbAddInFn.oxt ファイルを OOo のツール - 拡張機能マネージャからインストールしてください。インストール後は OOo を再起動する必要があります。

テスト用ファイル Edit

上記フォント、サービス、AddIn 関数が正しく配置、インストールできておれば以下のように表示されます。OOo で書かれたマクロが含まれています。実行するとセル範囲の郵便番号と住所から列CとD にコードを書き込みます。

test.png

アンインストール Edit

フォントは環境に応じて削除してください。

サービスおよび AddIn 関数はツール - 拡張機能マネージャから削除してください。正しく動作させるために OOo を一度再起動させるほうが無難です。

回答 Edit


感想,コメント,メモ Edit



Attach file: filenycbf_code.ods 1769 download [Information] filenycb_test.ods 1781 download [Information] filenycb.oxt 1683 download [Information] filenycbf.zip 1670 download [Information] filetest.png 1070 download [Information] filefont-1.png 618 download [Information] fileNycbAddInFn.oxt 1689 download [Information] filefont-3.png 633 download [Information] filefont-2.png 631 download [Information]

Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes