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_imageto receive aChunkyPNG::Canvasthat you can rotate, resample, or just convert to adataURL.>> 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_outputterand 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
dataURI is simple:"data:image/svg+xml;utf8,#{svg.gsub(/\n/, '')}" -
See the wiki Show archive.org snapshot for options on outputters and more.