Posted 18 days ago. Visible to the public.

Generating barcodes with the Barby gem

Barby is a great Ruby gem to generate barcodes of all different sorts.

Example usage

Generating a barcode is simple:

Copy
>> Barby::Code128.new('Hello Universe').to_png => "\x89PNG\r\n\u001A..."

Configuration

Barby supports several barcode types and you must require all necessary files explicitly.

For the example above these are barby/barcode/code_128 and barby/outputter/png_outputter.
You can specify that in your Gemfile like so:

Copy
gem 'barby', require: %w(barby barby/barcode/code_128 barby/outputter/png_outputter)

Pro tips

  • Barby's PNG outputter uses ChunkyPNG under the hood. You can call to_image to receive a ChunkyPNG::Canvas that you can rotate, resample, or just convert to a data URL.

    Copy
    >> Barby::Code128.new('Hello Universe').to_image.to_data_url => "data:image/png;base64,iVBORw0KGgoAA..."
  • For super-crisp barcodes, render them as SVG. Printing images usually causes some level of blur, but SVGs don't. Require Barby's svg_outputter and render an SVG (XML) string:

    Copy
    svg = Barby::Code128.new('Hello Universe').to_svg(margin: 0)

    To make that SVG freely scalable, you need to add preserveAspectRatio="none":

    Copy
    svg.sub!('<svg ', '<svg preserveAspectRatio="none" ')

    Generating a data URI is simple:

    Copy
    "data:image/svg+xml;utf8,#{svg.gsub(/\n/, '')}"
  • See the wiki for options on outputters and more.

By refactoring problematic code and creating automated tests, makandra can vastly improve the maintainability of your Rails application.

Author of this card:

Avatar
Arne Hartherz
Last edit:
11 days ago
by Arne Hartherz
About this deck:
We are makandra and do test-driven, agile Ruby on Rails software development.
License for source code
Posted by Arne Hartherz to makandropedia