それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

Rubyだけの

前回のバーコード作成は、GNUのライブラリに依存するのとビルドが必要でちょっと面倒だった。PureRubyを探してみた。

Rubyでバーコードを作るbarby

barby というバーコード作成ライブラリを見つけたbarby はpure rubyらしいのでそのままでいける。

早速入れてみた

takuya@air:~$ gem instal barby
Fetching: barby-0.5.0.gem (100%)

*** NEW REQUIRE POLICY ***"
Barby no longer require all barcode symbologies by default. You'll have
to require the ones you need. For example, if you need EAN-13,
require 'barby/barcode/ean_13'; For a full list of symbologies and their
filenames, see README.
***

Successfully installed barby-0.5.0
1 gem installed
Installing ri documentation for barby-0.5.0...
Installing RDoc documentation for barby-0.5.0...

割りとあっさり作り込める。

出来上がりサンプル

(sample)

使いた例:ソースコード

ソースは参考資料のものをそのまま借りてきました。

#!/usr/bin/env ruby
# coding: utf-8
#
require "rubygems"
require "thinreports"
require "rqrcode"

#barby
require 'barby'
require "barby/barcode/ean_13"
require "barby/barcode/ean_8"
require "barby/barcode/qr_code"
require "barby/outputter/png_outputter"


def barcode( type, data ,png_opts={})
  code = case type
         when :ean_13
            Barby::EAN13.new(data)
         when :ean_8
            Barby::EAN8.new(data)
         when :qr_code
            Barby::QrCode.new(data)
         end
  io = StringIO.new(code.to_png(png_opts))
  io.respond_to?(:set_encoding) ? io.set_encoding('UTF-8') : io
end

ThinReports::Report.generate_file("barcode.pdf", :layout => "barcode") do
  start_new_page
  #JAN13
  page.item(:jan_13).src(barcode(:ean_13, "491234567890"))
  #JAN8
  page.item(:jan_8 ).src(barcode(:ean_8 , "4512345"))
  #QR Code
  page.item(:qr_code).src(barcode(:qr_code, "http://www.thinpreposrts.org/",:ydim=>5, :xdim=>5))
end