Okapi Barcode is an open-source barcode generator written entirely in Java, supporting over 50 encoding standards, including all ISO standards. Okapi Barcode is based on Zint, an open-source barcode encoding library developed in C, and builds on the years of work that have been invested in that project.
- Australia Post variants:
- Standard Customer
- Reply Paid
- Routing
- Redirection
- Aztec Code
- Aztec Runes
- Channel Code
- Codabar
- Codablock F
- Code 11
- Code 128
- Code 16k
- Code 2 of 5 variants:
- Matrix 2 of 5
- Industrial 2 of 5
- IATA 2 of 5
- Datalogic 2 of 5
- Interleaved 2 of 5
- ITF-14
- Deutsche Post Leitcode
- Deutsche Post Identcode
- Code 32 (Italian pharmacode)
- Code 3 of 9 (Code 39)
- Code 3 of 9 Extended (Code 39 Extended)
- Code 49
- Code 93
- Code One
- Composite
- Data Matrix
- Dutch Post KIX Code
- EAN variants:
- EAN-13
- EAN-8
- Grid Matrix
- GS1 DataBar variants:
- GS1 DataBar
- GS1 DataBar Stacked
- GS1 DataBar Stacked Omnidirectional
- GS1 DataBar Expanded variants:
- GS1 DataBar Expanded
- GS1 DataBar Expanded Stacked
- GS1 DataBar Limited
- Japan Post
- Korea Post
- LOGMARS
- MaxiCode
- MSI (Modified Plessey)
- PDF417 variants:
- PDF417
- Truncated PDF417
- Micro PDF417
- Pharmacode
- Pharmacode Two-Track
- POSTNET / PLANET
- QR Code
- Royal Mail 4 State (RM4SCC)
- Telepen variants:
- Telepen
- Telepen Numeric
- UPC variants:
- UPC-A
- UPC-E
- USPS OneCode (Intelligent Mail)
To generate barcode images in your own code using the Okapi Barcode library, use one of the symbology classes linked above:
- instantiate the class,
- customize any relevant settings,
- invoke
setContent(String)
, and then - pass the symbol instance to one of the available symbol renderers (Java 2D, PostScript, SVG)
Code128 barcode = new Code128();
barcode.setFontName("Monospaced");
barcode.setFontSize(16);
barcode.setModuleWidth(2);
barcode.setBarHeight(50);
barcode.setHumanReadableLocation(HumanReadableLocation.BOTTOM);
barcode.setContent("123456789");
int width = barcode.getWidth();
int height = barcode.getHeight();
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_GRAY);
Graphics2D g2d = image.createGraphics();
Java2DRenderer renderer = new Java2DRenderer(g2d, 1, Color.WHITE, Color.BLACK);
renderer.render(barcode);
ImageIO.write(image, "png", new File("code128.png"));
Okapi Barcode JARs are available for download from Maven Central.
To use the Swing GUI, just run the OkapiUI class. The GUI allows you to explore the supported barcode symbologies and test them with different configurations and data.
gradlew check
: Compiles and runs all quality checks, including the unit tests.
gradlew jar
: Builds the JAR file.
gradlew uploadArchives
: Deploys to Maven Central (requires a modified gradle.properties file).
NOTE: The unit tests should all pass under Oracle JDK, but will probably not all pass under OpenJDK. The tests verify barcode rendering image output, and the output images generated by OpenJDK are a bit different from the output images generated by the Oracle JDK (because their 2D graphics and font subsystems are slightly different).