【GeneXus Tips】PDFにバーコード出力

書くことが思いつかないので昔のテキストあさってます。okita です。

数年前のテキストで
「バーコード出力」っていうのがありました。

ということで「GeneXusのPDFでバーコード出力」

とりあえずテキストはあるけどネットで検索。
テキストが適当すぎてわからんかったw
「GeneXus バーコード出力」
http://www.gxopen.com/forumsr/servlet/viewthread?ARTECH,25,172244
GeneXus のフォーラムがありました。

とりあえずフォントをいれれば出るぞっと・・・フォントを探そう。

バーコードにも種類があるようで
「一般的な商品で使われるものは、
 日本がJANコード、ヨーロッパがEAN、北米がUPCである。
 物流用途ではITFコード、CODE39、CODE128、NW-7などが使われている。
 また郵便事業ではカスタマバーコードなどが使われる。」
Wikipedia 【バーコード – Wikipedia】より抜粋

フォントを探した感じ↓を見つけました。
http://www.technical.jp/barcode/font/
上記ではCODE39、CODE128、NW-7がダウンロードできます。
そして今回はNW-7でテストします。

※EAN13等を使いたい場合は↓
http://sourceforge.jp/projects/sfnet_openbarcodes/
http://grandzebu.net/informatique/codbar-en/codbar.htm
ただし出力したいデータを変換しないと出力できないみたいです。
・・・・・変換ロジックの解説はまた今度にしましょうw

というわけでフォントをインストールしてGeneXusで出力してみよう!

出ました!これでOK

ただしこのままだとシステムをサーバにアップするとバーコード出ません。
ためしに先日のUbuntu にアップしてみます。

ヌルポになったw 予想外!

ということでサーバにもフォントをインストールします。
インストールしたのでこれで問題ない

あれ・・・ヌルポだ・・・インストールしただけじゃダメなのかwww

おそらくPDFの設定ファイルが Windows のままだからでしょう!
PDFの設定ファイルとはGeneXusが自動生成で作成した
PDFReport.ini」というファイルです。
一度でもPDFを出力するとシステムのディレクトリのどこかにいます。
Java + Tomcat の場合⇒「webapps/システム/WEB-INF/」
「PDFReport.ini」を修正します。

以下の部分を修正しました。
FontsLocation= /usr/share/fonts/truetype/

[Fonts Location (Sun)]
NW-7= /usr/share/fonts/truetype/NW-7.ttf

そして以下を追記
[Embeed Fonts]
NW-7= true

↑修正後の設定ファイルの中身。ターミナルで申し訳ない。

そしてTomcat再起動してPDF出力~

出ました!しかしこのままだとフォントファイルが存在しないPCで見た場合
バーコードが表示されません。
なのでPDFにバーコードフォントを埋め込みます。

ちなみに以下がバーコードフォント無しのスマホで
バーコードフォントが埋め込まれていないPDFを見た場合

「PDFReport.ini」の以下の部分を修正しました。
Embeed Fonts= true

もう一回出力。
これで出力されて
バーコードフォントが埋め込まれていることがわかります。
ためしにスマホでも見てみると・・・・ちゃんと出てます^^

これで最低限バーコードフォントが埋め込めました。
他にも設定ファイルにはいろいろ設定できますが今回は割愛

以上です。
ちなみにPDFの設定ファイルを編集した場合は
Tomcat等を再起動したほうがちゃんと読み込みが行われます。