Untitled

mail@pastecode.io avatar
unknown
plain_text
2 years ago
930 B
2
Indexable
from reportlab.graphics.barcode import createBarcodeDrawing
from reportlab.graphics import renderPM

def generate_barcode(product_code):
    dpi = 300  # Use a fixed DPI value (adjust it according to your printer's DPI)
    page_size_mm = (25.4, 54)
    page_size_pixels = tuple(int(dpi * page_size_mm[i] / 25.4) for i in (0, 1))
    desired_width = page_size_pixels[1] - 10  # Subtract a small margin
    desired_height = page_size_pixels[0] - 10  # Subtract a small margin

    barcode_drawing = createBarcodeDrawing(
        'Code128',
        value=product_code,
        barWidth=(desired_width / 110),  # Adjust the value to fit the desired width
        barHeight=desired_height,
        humanReadable=True,
    )
    
    barcode_drawing.rotate(90)
    barcode_image = renderPM.drawToPIL(barcode_drawing)
    output_filename = 'temp_barcode'
    barcode_image.save(output_filename + ".png")
    
    return output_filename