barcode-generator

SKILL.md

Barcode Generator

Generate barcodes in various formats for retail, inventory, and identification. Supports 1D barcodes (Code128, EAN, UPC) and batch generation from CSV.

Quick Start

from scripts.barcode_gen import BarcodeGenerator

# Generate barcode
gen = BarcodeGenerator()
gen.generate("123456789012", format="ean13", output="barcode.png")

# Code128 (variable length)
gen.generate("ABC-12345", format="code128", output="product.png")

# Batch from CSV
gen.batch_generate("products.csv", code_column="sku", output_dir="./barcodes")

Features

  • Multiple Formats: Code128, EAN13, EAN8, UPC-A, Code39, ITF, ISBN
  • Output Formats: PNG, SVG, PDF
  • Customization: Size, colors, text display
  • Batch Generation: From CSV files
  • Validation: Check digit calculation and verification

API Reference

Basic Generation

gen = BarcodeGenerator()

# Generate with auto-format detection
gen.generate("123456789012", output="barcode.png")

# Specific format
gen.generate("12345678", format="ean8", output="barcode.png")

Customization

gen.generate(
    "ABC123",
    format="code128",
    output="barcode.png",
    width=300,            # Image width
    height=150,           # Image height
    show_text=True,       # Show code below barcode
    font_size=12,         # Text size
    foreground="black",   # Bar color
    background="white"    # Background color
)

Batch Generation

# From CSV
gen.batch_generate(
    "products.csv",
    code_column="sku",
    format="code128",
    output_dir="./barcodes",
    filename_column="product_name"  # Use product name as filename
)

# From list
codes = ["ABC001", "ABC002", "ABC003"]
gen.batch_generate_list(codes, format="code128", output_dir="./barcodes")

Validation

# Validate barcode format
is_valid = gen.validate("5901234123457", format="ean13")

# Calculate check digit
check = gen.calculate_check_digit("590123412345", format="ean13")
# Returns: 7

# Generate with auto check digit
gen.generate("590123412345", format="ean13", auto_check_digit=True)

Output Formats

# PNG (default)
gen.generate("123", format="code128", output="barcode.png")

# SVG (vector)
gen.generate("123", format="code128", output="barcode.svg")

# PDF
gen.generate("123", format="code128", output="barcode.pdf")

CLI Usage

# Generate single barcode
python barcode_gen.py --code "123456789012" --format ean13 --output barcode.png

# Code128
python barcode_gen.py --code "ABC-12345" --format code128 --output product.png

# Custom size
python barcode_gen.py --code "12345" --format code39 --width 400 --height 200

# Batch from CSV
python barcode_gen.py --batch products.csv --column sku --format code128 --output-dir ./barcodes

# Validate
python barcode_gen.py --validate "5901234123457" --format ean13

CLI Arguments

Argument Description Default
--code Code to encode -
--format Barcode format code128
--output Output file -
--width Image width 300
--height Image height 150
--no-text Hide code text False
--batch CSV file for batch -
--column Code column in CSV code
--output-dir Output directory .
--validate Validate code -

Supported Formats

Format Length Characters Use Case
code128 Variable ASCII General purpose
ean13 13 Digits Retail products
ean8 8 Digits Small products
upca 12 Digits US retail
code39 Variable A-Z, 0-9, symbols Industrial
itf Even Digits Shipping
isbn13 13 Digits Books
isbn10 10 Digits + X Books (legacy)

Examples

Product Label

gen = BarcodeGenerator()

gen.generate(
    "5901234123457",
    format="ean13",
    output="product_barcode.png",
    width=250,
    height=100,
    show_text=True
)

Inventory Tags

gen = BarcodeGenerator()

inventory = [
    {"sku": "INV-001", "name": "Widget A"},
    {"sku": "INV-002", "name": "Widget B"},
    {"sku": "INV-003", "name": "Widget C"}
]

for item in inventory:
    gen.generate(
        item["sku"],
        format="code128",
        output=f"./tags/{item['name']}.png"
    )

Book ISBN

gen = BarcodeGenerator()

# ISBN-13 barcode
gen.generate(
    "9780134685991",
    format="isbn13",
    output="book_barcode.png"
)

Batch Product Labels

gen = BarcodeGenerator()

# products.csv:
# sku,product_name,price
# 123456789012,Widget A,9.99
# 234567890123,Widget B,14.99

gen.batch_generate(
    "products.csv",
    code_column="sku",
    format="ean13",
    output_dir="./product_labels",
    filename_column="product_name"
)

Check Digit Calculation

The generator can automatically calculate and append check digits:

gen = BarcodeGenerator()

# EAN-13: 12 digits + 1 check digit
gen.generate("590123412345", format="ean13", auto_check_digit=True)
# Generates barcode for "5901234123457"

# Manually calculate
check = gen.calculate_check_digit("590123412345", format="ean13")
print(f"Check digit: {check}")  # 7

Dependencies

python-barcode>=0.15.0
Pillow>=10.0.0

Limitations

  • Some formats have strict length requirements
  • Characters must match format specifications
  • PDF output may require additional fonts
  • Very long codes may not scan well at small sizes
Weekly Installs
40
GitHub Stars
23
First Seen
Jan 24, 2026
Installed on
opencode32
claude-code31
gemini-cli30
codex28
cursor27
github-copilot25