Barby is a great Ruby gem to generate barcodes of all different sorts.
It includes support for QR codes via rQRCode Show archive.org snapshot ; if you need to render only QR codes, you may want to use that directly.
Example usage
Generating a barcode is simple:
>> Barby::Code128.new('Hello Universe').to_png
=> "\x89PNG\r\n\u001A..."
Configuration
Barby supports several barcode types Show archive.org snapshot 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:
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 aChunkyPNG::Canvas
that you can rotate, resample, or just convert to adata
URL.>> 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:svg = Barby::Code128.new('Hello Universe').to_svg(margin: 0)
To make that SVG freely scalable, you need to add
preserveAspectRatio="none"
:svg.sub!('<svg ', '<svg preserveAspectRatio="none" ')
Generating a
data
URI is simple:"data:image/svg+xml;utf8,#{svg.gsub(/\n/, '')}"
-
See the wiki Show archive.org snapshot for options on outputters and more.