Python Barcode Generator
This utility generates barcodes in various formats (like EAN-13, CODE128, ISBN) using the python-barcode library. It can save the output as an SVG (default) or a PNG image.
Modules Used:
python-barcode: To generate the barcode data and images.- argparse: To handle command-line arguments.
- Pillow: (Optional) Required if you want to save barcodes as PNG images.
Installation
pip install python-barcode
# Optional: For PNG support
pip install "python-barcode[images]"
The Code
Save this as barcode_gen.py.
import barcode
from barcode.writer import ImageWriter
import argparse
import sys
def generate_barcode(data, barcode_type, output_file, as_png):
try:
# Get the barcode class
barcode_class = barcode.get_barcode_class(barcode_type)
# Create writer if PNG is requested
writer = ImageWriter() if as_png else None
# Create barcode object
my_barcode = barcode_class(data, writer=writer)
# Save
# python-barcode automatically appends the extension (.svg or .png)
filename = my_barcode.save(output_file)
print(f"Barcode generated successfully: {filename}")
except barcode.errors.BarcodeNotFoundError:
print(f"Error: Barcode type '{barcode_type}' not found.")
print(f"Available types: {', '.join(barcode.PROVIDED_BARCODES)}")
except Exception as e:
print(f"Error: {e}")
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Barcode Generator")
parser.add_argument("data", help="The data/text to encode in the barcode")
parser.add_argument("-t", "--type", default="code128", help="Barcode type (e.g., code128, ean13, isbn). Default: code128")
parser.add_argument("-o", "--output", default="barcode", help="Output filename (without extension)")
parser.add_argument("--png", action="store_true", help="Save as PNG instead of SVG (requires Pillow)")
args = parser.parse_args()
generate_barcode(args.data, args.type, args.output, args.png)
Usage
# Generate a Code128 barcode (SVG)
python barcode_gen.py "Hello World"
# Generate an EAN-13 barcode as PNG
python barcode_gen.py "123456789012" --type ean13 --png --output my_product