Posted 4 months ago. Visible to the public.

Generating barcodes with the Barby gem

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

It includes support for QR codes via rQRCode; if you need to render only QR codes, you may want to use that directly.

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.

Does your version of Ruby on Rails still receive security updates?
Rails LTS provides security patches for old versions of Ruby on Rails (3.2 and 2.3).

Author of this card:

Avatar
Arne Hartherz
Last edit:
about 1 month 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