Escpos
A ruby implementation of ESC/POS (thermal) printer command specification.
Installation
Add this line to your application's Gemfile:
gem 'escpos'
# see https://github.com/escpos/escpos-image
gem 'escpos-image' # add this if you want to print images
And then execute:
$ bundle
Or install it yourself as:
$ gem install escpos
Image support
To keep this gem lightweight and modular image support was implemented in another gem:
https://github.com/escpos/escpos-image
# Add this line to your application's Gemfile if you want to print images
gem 'escpos-image'
# And depending on your image processor of choice
gem 'mini_magick'
# or
gem 'chunky_png'
Or install it yourself as:
gem install escpos-image
# and then depending on your image processor of choice
gem install mini_magick
# or
gem install chunky_png
For more information about image processors, their options and supported formats please see https://github.com/escpos/escpos-image readme file.
Examples
Basic usage
@printer = Escpos::Printer.new
@printer << "Some text"
@printer << Escpos::Helpers.big "Big text"
@printer.to_escpos # returns ESC/POS data ready to be sent to printer
# on linux this can be piped directly to /dev/usb/lp0
# with network printer sent directly to printer socket
# with serial port printer it can be sent directly to the serial port
@printer.to_base64 # returns base64 encoded ESC/POS data
Report class usage
# my_report.rb:
class MyReport < Escpos::Report
def item(text)
@count ||= 0
@count += 1
bold "#{@count}. #{text}"
end
def order
[:order]
end
end
<% # my_report.erb: %>
<%= big "Order number #{order[:number]}" %>
<%= item "First item" %>
<%= item "Second item" %>
<%= item "Third item" %>
report = MyReport.new 'path/to/my_report.erb', {
order: { number: 123 }
}
@printer << report.render
@printer.cut!
# @printer.to_escpos or @printer.to_base64 contains resulting ESC/POS data
Available helper methods
Method name | Description |
---|---|
text | Normal text formatting |
encode | Encode text for the printer |
encoding, set_encoding, set_printer_encoding | Set printer encoding |
double_height | Double height text |
quad_text, big, title, header, double_width_double_height, double_height_double_width | Double width & Double height text |
double_width | Double width text |
underline, u | Underlined text |
underline2, u2 | Stronger underlined text |
bold, b | Bold text |
left | Align to left |
right | Align to right |
center | Align to center |
invert, inverted | Color inverted text |
black, default_color, color_black, black_color | Default Color (Usually black) |
red, alt_color, alternative_color, color_red, red_color | Alternative Color (Usually Red) |
barcode | Print barcode |
partial_cut | Partially cut the paper (may not be available on all devices) |
cut | Fully cut the paper (may not be available on all devices) |
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/escpos/escpos.
- Fork it ( https://github.com/escpos/escpos/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request