前回のバーコード作成は、GNUのライブラリに依存するのとビルドが必要でちょっと面倒だった。PureRubyを探してみた。
早速入れてみた
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...
割りとあっさり作り込める。
使いた例:ソースコード
ソースは参考資料のものをそのまま借りてきました。
#!/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