Socket
Book a DemoInstallSign in
Socket

ruby-zint-es

Package Overview
Dependencies
Maintainers
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ruby-zint-es

1.3.0
bundlerRubygems
Version published
Maintainers
2
Created
Source

ruby-zint

CI

This gem is a Ruby FFI binding for the libzint barcode generation library.

See the documentation for a full API description.

Installation

By default ruby-zint first tries to use libzint installed on the system. If libzint can't be found or if it isn't a supported version, then the zint version, bundled into the gem, is compiled and used. Both install methods can be enforced by using --enable-system-libzint or --disable-system-libzint options, see below.

First install CMake with your package manager (e. g. apt install cmake).

Afterwards install the gem and force builtin libzint:

$ gem install ruby-zint -- --disable-system-libzint

With system libraries

Install the libzint binary with your package manager (e. g. apt install zint or perhaps brew install zint).

Other platforms require building from source.

NOTE: It is assumed that you are using libzint with the version 2.12.

Then install this gem and enforce system libzint:

$ gem install ruby-zint -- --enable-system-libzint

Gemfile

Include gem "ruby-zint" in your Gemfile. Optionally set the install option by running bundler like so:

bundle config build.ruby-zint --enable-system-libzint

PNG support

Please install libpng (e. g. apt install libpng-dev) before installing the gem if you want to use the PNG format.

Usage

require "zint"

barcode = Zint::Barcode.new(value: "Test", symbology: Zint::BARCODE_CODE128)

# Export to file
barcode.to_file(path: "out.png")

# Export file to memory
barcode.to_memory_file(extension: ".png")

# Write from Bitmap to own canvas
require "chunky_png"
png = ChunkyPNG::Image.new(bitmap.width, bitmap.height, ChunkyPNG::Color::TRANSPARENT)
white = ChunkyPNG::Color("white")
black = ChunkyPNG::Color("black")

bitmap = barcode.to_bitmap
bitmap.pixels.each do |pixel|
  png.compose_pixel(pixel.x, pixel.y, (pixel.colour == "1") ? black : white)
end

png.save("out.png")

# Use vector export
vec = Zint::Qr.new(value: "Test").to_vector
png = ChunkyPNG::Image.new(vec.width.to_i, vec.height.to_i, ChunkyPNG::Color::WHITE)
vec.each_rectangle do |rec|
  png.rect(rec.x.to_i, rec.y.to_i,
      rec.x.to_i+rec.width.to_i-1, rec.y.to_i+rec.height.to_i-1,
      ChunkyPNG::Color::BLACK, ChunkyPNG::Color::BLACK)
end
png.save("out.png")

# See also manual: https://zint.org.uk/manual/chapter/5#buffering-symbols-in-memory-vector

# Use file as input
barcode = Zint::Barcode.new(input_file: "/tmp/test.txt")
barcode.to_file(path: "out.png")

# Use of comfort classes

# EAN
ean_barcode = Zint::Eanx.new(value: "012345678912")
ean_barcode.to_file(path: "ean.png")

# Code128
code_128_barcode = Zint::Code128.new(value: "012345678912")
code_128_barcode.to_file(path: "code_128.png")

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/api-walker/ruby-zint.

License

The gem is available as open source under the terms of the MIT License.

Credits

The project is based on the work and ideas of Angel Pizarro's zint. I would also like to say a big thank you to Lars Kanis for his great contributions.

FAQs

Package last updated on 25 Oct 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

About

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc

U.S. Patent No. 12,346,443 & 12,314,394. Other pending.