CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/maven-com-google-zxing--core

Core barcode encoding/decoding library supporting 17 formats including QR Code, Data Matrix, Aztec, PDF 417, and various 1D barcodes

Pending
Overview
Eval results
Files

packages.mddocs/reference/

Package Structure

ZXing Core organizes classes into a clear package hierarchy. Understanding this structure helps navigate the library and find the right classes quickly.

Package Overview

com.google.zxing
├── (root)                    # Core interfaces and enums
├── common                    # Shared utilities and data structures
├── qrcode                    # QR Code implementation
│   ├── decoder              # QR Code decoding logic
│   └── encoder              # QR Code encoding logic
├── datamatrix               # Data Matrix implementation
│   ├── decoder              # Data Matrix decoding
│   └── encoder              # Data Matrix encoding
├── pdf417                   # PDF417 implementation
│   ├── decoder              # PDF417 decoding
│   └── encoder              # PDF417 encoding
├── aztec                    # Aztec Code implementation
│   ├── decoder              # Aztec decoding
│   └── encoder              # Aztec encoding
├── maxicode                 # MaxiCode implementation
│   └── decoder              # MaxiCode decoding (read-only)
├── oned                     # 1D barcode implementations
│   └── rss                  # RSS/GS1 DataBar formats
├── multi                    # Multiple barcode detection
│   └── qrcode               # QR Code multi-detection
└── client                   # Client utilities
    └── result               # Result parsing

Root Package: com.google.zxing

Purpose: Core interfaces, enums, and base classes used throughout the library.

Key Classes:

// Main interfaces
interface Reader { }
interface Writer { }
interface MultipleBarcodeReader { }

// Primary implementations
class MultiFormatReader implements Reader { }
class MultiFormatWriter implements Writer { }

// Core enums
enum BarcodeFormat { }
enum DecodeHintType { }
enum EncodeHintType { }
enum ResultMetadataType { }

// Result classes
class Result { }
class ResultPoint { }
interface ResultPointCallback { }

// Exception hierarchy
abstract class ReaderException extends Exception { }
class NotFoundException extends ReaderException { }
class ChecksumException extends ReaderException { }
class FormatException extends ReaderException { }
class WriterException extends Exception { }

// Binary representation
class BinaryBitmap { }

// Luminance sources
abstract class LuminanceSource { }
class RGBLuminanceSource extends LuminanceSource { }
class PlanarYUVLuminanceSource extends LuminanceSource { }
class InvertedLuminanceSource extends LuminanceSource { }

When to use:

  • Start here for Reader/Writer interfaces
  • BarcodeFormat enum for format specification
  • Result for decode output
  • Exceptions for error handling

Documentation: Core Reading and Writing, Barcode Formats, Exception Handling

Common Package: com.google.zxing.common

Purpose: Shared utilities, data structures, and algorithms used across all formats.

Key Classes:

// Bit structures
class BitMatrix { }
class BitArray { }
class BitSource { }

// Binarization
abstract class Binarizer { }
class GlobalHistogramBinarizer extends Binarizer { }
class HybridBinarizer extends GlobalHistogramBinarizer { }

// Character encoding
enum CharacterSetECI { }
class ECIEncoderSet { }
class ECIStringBuilder { }

// Geometric transformations
class PerspectiveTransform { }
abstract class GridSampler { }
class DefaultGridSampler extends GridSampler { }

// Result containers
class DetectorResult { }
class DecoderResult { }

// Utilities
class StringUtils { }

// Detector utilities (com.google.zxing.common.detector)
class MathUtils { }
class MonochromeRectangleDetector { }
class WhiteRectangleDetector { }

When to use:

  • BitMatrix/BitArray for bit-level operations
  • Binarizers for image processing
  • Character encoding for international text
  • PerspectiveTransform for geometric corrections
  • Grid sampling for 2D barcode detection

Documentation: Bit Structures, Image Processing, Common Utilities

QR Code Package: com.google.zxing.qrcode

Purpose: Complete QR Code encoding and decoding implementation.

qrcode (root)

class QRCodeReader implements Reader { }
class QRCodeWriter implements Writer { }

qrcode.decoder

class Decoder { }
class QRCodeDecoderMetaData { }
enum ErrorCorrectionLevel { L, M, Q, H }
enum Mode { NUMERIC, ALPHANUMERIC, BYTE, KANJI, ... }
class Version { }
class FormatInformation { }

qrcode.encoder

class Encoder { }
class QRCode { }
class ByteMatrix { }
class MaskUtil { }
class MatrixUtil { }

When to use:

  • QRCodeReader/Writer for QR Code operations
  • ErrorCorrectionLevel for encoding configuration
  • Encoder class for advanced encoding control
  • Version class for QR Code size/capacity info

Documentation: QR Code Support

Data Matrix Package: com.google.zxing.datamatrix

Purpose: Data Matrix 2D barcode encoding and decoding.

datamatrix (root)

class DataMatrixReader implements Reader { }
class DataMatrixWriter implements Writer { }

datamatrix.encoder

enum SymbolShapeHint { FORCE_NONE, FORCE_SQUARE, FORCE_RECTANGLE }
class DefaultPlacement { }
class ErrorCorrection { }
class HighLevelEncoder { }

datamatrix.decoder

class Decoder { }
class DataBlock { }
class Version { }

When to use:

  • DataMatrixReader/Writer for Data Matrix operations
  • SymbolShapeHint for shape control
  • Version for size selection

Documentation: Data Matrix Support

PDF417 Package: com.google.zxing.pdf417

Purpose: PDF417 2D barcode encoding and decoding.

pdf417 (root)

class PDF417Reader implements Reader, MultipleBarcodeReader { }
class PDF417Writer implements Writer { }
class PDF417ResultMetadata { }

pdf417.encoder

enum Compaction { AUTO, TEXT, BYTE, NUMERIC }
class Dimensions { }
class PDF417 { }

pdf417.decoder

class Decoder { }
class BarcodeMetadata { }
class BoundingBox { }
class DetectionResult { }

When to use:

  • PDF417Reader/Writer for PDF417 operations
  • Compaction enum for encoding mode
  • Dimensions for size constraints
  • PDF417ResultMetadata for detailed decode info

Documentation: PDF417 Support

Aztec Package: com.google.zxing.aztec

Purpose: Aztec Code 2D barcode encoding and decoding.

aztec (root)

class AztecReader implements Reader { }
class AztecWriter implements Writer { }

aztec.encoder

class Encoder { }
class AztecCode { }
class HighLevelEncoder { }

aztec.decoder

class Decoder { }
class AztecDetectorResult { }

When to use:

  • AztecReader/Writer for Aztec operations
  • Encoder for advanced control
  • AztecCode for encoding results

Documentation: Aztec Support

MaxiCode Package: com.google.zxing.maxicode

Purpose: MaxiCode 2D barcode decoding (read-only).

maxicode (root)

class MaxiCodeReader implements Reader { }

maxicode.decoder

class Decoder { }
class MaxiCodeDecoderMetadata { }

When to use:

  • MaxiCodeReader for reading MaxiCode barcodes
  • Note: No writer (MaxiCode is read-only in ZXing Core)

Documentation: MaxiCode Support

1D Barcode Package: com.google.zxing.oned

Purpose: All 1D (linear) barcode format implementations.

oned (root)

// Base classes
abstract class OneDReader implements Reader { }
class MultiFormatOneDReader extends OneDReader { }
abstract class UPCEANReader extends OneDReader { }

// Format-specific readers and writers
class Code39Reader extends OneDReader { }
class Code39Writer implements Writer { }
class Code93Reader extends OneDReader { }
class Code93Writer implements Writer { }
class Code128Reader extends OneDReader { }
class Code128Writer implements Writer { }
class CodaBarReader extends OneDReader { }
class CodaBarWriter implements Writer { }
class EAN8Reader extends UPCEANReader { }
class EAN8Writer implements Writer { }
class EAN13Reader extends UPCEANReader { }
class EAN13Writer implements Writer { }
class UPCAReader implements Reader { }
class UPCAWriter implements Writer { }
class UPCEReader extends UPCEANReader { }
class UPCEWriter implements Writer { }
class ITFReader extends OneDReader { }
class ITFWriter implements Writer { }

oned.rss (GS1 DataBar)

abstract class AbstractRSSReader extends OneDReader { }
class RSS14Reader extends AbstractRSSReader { }
class RSSExpandedReader extends AbstractRSSReader { }
class RSSUtils { }

When to use:

  • Format-specific readers for known 1D format
  • MultiFormatOneDReader for any 1D format
  • Code128Writer for shipping labels
  • EAN13Reader/Writer for retail products

Documentation: 1D Barcode Support

Multi-Detection Package: com.google.zxing.multi

Purpose: Multiple barcode detection from single image.

multi (root)

interface MultipleBarcodeReader { }
class GenericMultipleBarcodeReader implements MultipleBarcodeReader { }
class ByQuadrantReader implements Reader { }

multi.qrcode

class QRCodeMultiReader extends QRCodeReader
    implements MultipleBarcodeReader { }

When to use:

  • GenericMultipleBarcodeReader for any format multi-detection
  • QRCodeMultiReader for multiple QR codes
  • ByQuadrantReader for difficult single barcode detection

Documentation: Multiple Barcode Detection

Client Package: com.google.zxing.client.result

Purpose: Parse barcode results into structured data types.

client.result (root)

abstract class ResultParser { }
abstract class ParsedResult { }
enum ParsedResultType { }

// Specific parsed result types
class AddressBookParsedResult extends ParsedResult { }
class EmailAddressParsedResult extends ParsedResult { }
class URIParsedResult extends ParsedResult { }
class GeoParsedResult extends ParsedResult { }
class TelParsedResult extends ParsedResult { }
class SMSParsedResult extends ParsedResult { }
class CalendarParsedResult extends ParsedResult { }
class WifiParsedResult extends ParsedResult { }
class ProductParsedResult extends ParsedResult { }
class ISBNParsedResult extends ParsedResult { }
class VINParsedResult extends ParsedResult { }
class TextParsedResult extends ParsedResult { }

// Parser implementations (37 total)
class VCardResultParser extends ResultParser { }
class EmailAddressResultParser extends ResultParser { }
class WifiResultParser extends ResultParser { }
// ... and 34 more

When to use:

  • ResultParser.parseResult() to parse any barcode
  • ParsedResult subclasses for structured data access
  • Essential for QR codes containing WiFi, vCards, URLs, etc.

Documentation: Result Parsing

Package Dependencies

Dependency Flow:

Format-specific packages (qrcode, datamatrix, etc.)
          ↓
       common
          ↓
       (root)
  • Format packages depend on common and root
  • common depends on root only
  • Root has no dependencies
  • client.result depends on root only

Import Patterns

For basic decoding:

import com.google.zxing.*;
import com.google.zxing.common.*;

For specific format:

import com.google.zxing.*;
import com.google.zxing.common.*;
import com.google.zxing.qrcode.*;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;

For result parsing:

import com.google.zxing.*;
import com.google.zxing.client.result.*;

For multi-detection:

import com.google.zxing.*;
import com.google.zxing.multi.*;

Best Practices

Package Selection:

  • Use root package for general barcode operations
  • Use format-specific packages when format is known
  • Use common package for image processing and utilities
  • Use client.result for structured data parsing

Performance:

  • Import only needed packages
  • Use format-specific readers when format is known (faster)
  • Common utilities are shared (no duplication penalty)

Architecture:

  • Root defines contracts (interfaces)
  • Format packages provide implementations
  • Common provides shared infrastructure
  • Clean separation of concerns

See Also

Install with Tessl CLI

npx tessl i tessl/maven-com-google-zxing--core@3.5.1

docs

index.md

tile.json