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