README.md in zebra-epl-0.0.7 vs README.md in zebra-epl-0.0.8

- old
+ new

@@ -1,8 +1,8 @@ # Zebra::Epl -TODO: Write a gem description +Zebra::Epl offers a Ruby DSL to design and print labels using the EPL programming language. ## Installation Add this line to your application's Gemfile: @@ -16,10 +16,146 @@ $ gem install zebra-epl ## Usage -TODO: Write usage instructions here +### Building labels + +You create new labels with an instance of the `Zebra::Epl::Label` class. It accepts the following options: + +* `copies`: The number of copies to print. This option defaults to 1. +* `width`: The label's width, in dots. +* `length`: The label's length, is dots. +* `gap`: The gap between labels, in dots. +* `print_speed`: The print speed to be used. You can use values between 0 and 6. This option is required. +* `print_density`: The print density to be used. You can use values between 0 and 15. This option is required. + +With a label, you can start adding elements to it: + + label = Zebra::Epl::Label.new :print_density => 8, :print_speed => 3 + text = Zebra::Epl::Text.new :data => "Hello, printer!", :position => [100, 100], :font => Zebra::Epl::Font::SIZE_2 + label << text + +You can add as many elements as you want. + +### Printing the labels + +You need to have your printer visible to CUPS. Once your printer is configured and you know its name on CUPS, you can send the labels to the printer using a `Zebra::PrintJob` instance. + + label = Zebra::Epl::Label.new( + :width => 200, + :length => 200, + :print_speed => 3, + :print_density => 6 + ) + + + barcode = Zebra::Epl::Barcode.new( + :data => "12345678", + :position => [50, 50], + :height => 50, + :print_human_readable_code => true, + :narrow_bar_width => 4, + :wide_bar_width => 8, + :type => Zebra::Epl::BarcodeType::CODE_128_AUTO + ) + + print_job = Zebra::PrintJob.new "your-printer-name-on-cups" + + print_job.print label + +This will persist the label contents to a tempfile (using Ruby's tempfile core library) and copy the file to the printer using either `lpr -P <your-printer-name-on-cups> -o raw <path-to-the-temp-file>` (if you're on Mac OSX) or `lp -d <your-printer-name-on-cups> -o raw <path-to-the-tempfile>` (if you're on Linux). All the tempfile creation/path resolution, as well as which command has to be used, are handled by the `PrintJob` class. + +### Printing QR codes + + label = Zebra::Epl::Label.new( + :width=>350, + :length=>250, + :print_speed=>3, + :print_density=>6 + ) + + qrcode = Zebra::Epl::Qrcode.new( + :data=>"www.github.com", + :position=>[50,10], + :scale_factor=>3, + :correction_level=>"H" + ) + + label << qrcode + + print_job = Zebra::PrintJob.new "your-qr-printer-name-on-cups" + + print_job.print label + +### Available elements + +#### Text + +You create text elements to print using instances of the `Zebra::Epl::Text` class. It accepts the following options: + +* `position`: An array with the coordinates to place the text, in dots. +* `rotation`: The rotation for the text. More about the possible values below. +* `data`: The text to be printed. +* `v_multiplier`: The vertical multiplier to use. +* `h_multiplier`: The horizontal multipler to use. +* `print_mode`: The print mode. Can be normal ("N") or reverse ("R"). +* `font`: The font size to use. You can use values between 1 and 5. + +For the print modes, you can also use the constants: + +* `Zebra::Epl::PrintMode::NORMAL` +* `Zebra::Epl::PrintMode::REVERSE` + + +#### Barcodes + +You create barcode elements to print using instances of the `Zebra::Epl::Barcode` class. It accepts the following options: + +* `position`: An array with the coordinates to place the text, in dots. +* `height`: The barcode's height, in dots. +* `rotation`: The rotation for the text. More about the possible values below. +* `data`: The text to be printed. +* `type`: The type os barcode to use. More on the available types below. +* `narrow_bar_width`: The barcode's narrow bar width, in dots. +* `wide_bar_width`: The barcode's wide bar width, in dots. +* `print_human_readable_code`: Can be `true` or `false`, indicates if the human readable contents should be printed below the barcode. + +The available barcode types are: + +* `Zebra::Epl::BarcodeType::CODE_39` +* `Zebra::Epl::BarcodeType::CODE_39_CHECK_DIGIT` +* `Zebra::Epl::BarcodeType::CODE_93` +* `Zebra::Epl::BarcodeType::CODE_128_AUTO` +* `Zebra::Epl::BarcodeType::CODE_128_A` +* `Zebra::Epl::BarcodeType::CODE_128_B` +* `Zebra::Epl::BarcodeType::CODE_128_C` +* `Zebra::Epl::BarcodeType::CODABAR` + +#### QR Codes + +You can create QR Codes elements to print using instances of the `Zebra::Epl::Qrcode` class. It accepts the following options: + +* `position`: An array with the coordinates to place the QR code, in dots. +* `scale factor`: Crucial variable of the QR codes's size. Accepted values: 1-99. +* `error correction level`: Algorithm enables reading damaged QR codes. There are four error correction levels: L - 7% of codewords can be restored, M - 15% can be restored, Q - 25% can be restored, H - 30% can be restored. + +#### Boxes + +You can draw boxes in your labels: + + box = Zebra::Epl::Box.new :position => [20, 20], :end_position => [100, 100], :line_thickness => 39 + +#### Elements rotation + +All printable elements can be rotated on the label, using the `:rotation` option. The accepted rotation values are: + +* `Zebra::Epl::Rotation::NO_ROTATION`: will not rotate the element. +* `Zebra::Epl::Rotation::DEGREES_90`: will rotate the element 90 degrees. +* `Zebra::Epl::Rotation::DEGREES_180`: will rotate the element 180 degrees. +* `Zebra::Epl::Rotation::DEGREES_270`: will rotate the element 270 degrees. + + ## Contributing 1. Fork it 2. Create your feature branch (`git checkout -b my-new-feature`)