Skip to content

anastaciocintra/escpos-coffee

Repository files navigation

escpos-coffee

https://github.com/anastaciocintra/escpos-coffee

GitHub Java CI with Maven Maven Central Sonatype Nexus (Snapshots)

Java library for ESC/POS printer commands. Can send text, images and barcodes to the printer. All commands are send to one OutputStream, then you can redirect to printer, file or network.

Compatible / Tested platforms

  • Linux
  • FreeBsd
  • Windows
  • MacOS
  • Android Mobile

Getting Started

sending "hello world" to the printer

import com.github.anastaciocintra.escpos.EscPos;
import com.github.anastaciocintra.output.PrinterOutputStream;

import javax.print.PrintService;
import java.io.IOException;

public class HelloWorld {
    public static void main(String[] args) throws IOException {
        if(args.length!=1){
            System.out.println("Usage: java -jar escpos-simple.jar (\"printer name\")");
            System.out.println("Printer list to use:");
            String[] printServicesNames = PrinterOutputStream.getListPrintServicesNames();
            for(String printServiceName: printServicesNames){
                System.out.println(printServiceName);
            }

            System.exit(0);
        }

        PrintService printService = PrinterOutputStream.getPrintServiceByName(args[0]);
        PrinterOutputStream printerOutputStream = new PrinterOutputStream(printService);
        EscPos escpos = new EscPos(printerOutputStream);
        escpos.writeLF("Hello world");
        escpos.feed(5).cut(EscPos.CutMode.FULL);
        escpos.close();
    }
}

Installation with Maven

<dependency>
  <groupId>com.github.anastaciocintra</groupId>
  <artifactId>escpos-coffee</artifactId>
  <version>4.1.0</version>
</dependency>

Installation with Gradle

Step 1. Add the repository to your build file

repositories {
    mavenCentral()
}

Step 2. Add the dependency

dependencies {
    implementation 'com.github.anastaciocintra:escpos-coffee:4.1.0'
}

Installation without Maven or Gradle

Download code from the last release of escpos-coffee.

The project can be compiled with the below command:


mvn clean package

Then the jar file will be generated inside the 'target/' folder, just add the jar file to your classpath.

Samples

You can find all samples codes on https://github.com/anastaciocintra/escpos-coffee-samples

getstart sample

getstart - Send info of the library to the printer.

output

textstyle sample

textstyle - Shows how to construnct one simple receipt.

output

Also this sample show how simple is to create diferent text styles, like title, subtitle, bold, etc.

  Style title = new Style()
          .setFontSize(Style.FontSize._3, Style.FontSize._3)
          .setJustification(EscPosConst.Justification.Center);

graphicsimage, bitimage and rasterimage samples

Shows how to work with ImageWrapper.

Then you will see things like how to print on center-justified one image, like this:

    escpos.writeLF("print on Center");
    imageWrapper.setJustification(EscPosConst.Justification.Center);
    escpos.write(imageWrapper, escposImage);

dithering sample

dithering - Shows how to work with BitonalThreshold and BitonalOrderedDither.

output

output

Bellow, we can see how to use ordered dither class.

  algorithm = new BitonalOrderedDither();
  EscPosImage escposImage = new EscPosImage(new CoffeeImageImpl(imageBufferedImage), algorithm);     
  escpos.write(imageWrapper, escposImage);

barcode sample

barcode - Shows barcode, PDF417 and qrcode.

output

output

output

Bellow, code to send barcode to the printer

  BarCode barcode = new BarCode();
  escpos.write(barcode, "hello barcode");

codetable sample

charcode - Shows how to send texts from different languages.

  escpos.setCharacterCodeTable(CharacterCodeTable.CP863_Canadian_French);
  escpos.writeLF("Liberté et Fraternité.");

Others

Android - How to use this lib on Android Studio project.

BarcodeGen - How to generate barcode image and print it

PdfPrinting - How to print pdf files

CoffeeBitmap - How to construct html/css receipts

output

Versioning

Using SemVer for versioning.

Lastest release here.

Contributting

Contributors are welcome, but before you do it its important to read and agree with CODE_OF_CONDUCT.md and CONTRIBUTING.md.

Acknowledgments

I would like to thanks Michael Billington and contributors for the great work on the mike42/escpos-php project that inspired me to start this project.