Хорошо, сегодня я создал скрипт, который принимает номер элемента или любой номер для этой цели, чтобы сгенерировать штрих-код. Теперь я хотел напечатать 60 одинаковых штрих-кодов в 4 столбцах, что сделало бы его матрицей (15 X 4), что облегчило бы понимание. Теперь я успешно добился этого со страницей нестандартного размера (900 * 850) и уместил 15 строк и 4 столбца штрих-кодов, сгенерированных reportlab code128.
Вот код:
from reportlab.graphics.barcode import code128
from reportlab.lib.units import mm
from reportlab.pdfgen import canvas
#----------------------------------------------------------------------#
def createBarCodes():
codeName = "NOT_C17"
c = canvas.Canvas(codeName+".pdf")
c.setPageSize((900, 850))
barcode_value = codeName
barcode128 = code128.Code128(
barcode_value,
barHeight=20,
barWidth=1.05,
fontSize=15,
humanReadable = True
)
x = 15 * mm
for i in range(4):
y = 275 * mm
i=0
while i < 15:
barcode128.drawOn(c, x, y)
y = y - 18 * mm
i+=1
x=x+(70*mm)
c.save()
if __name__ == "__main__":
createBarCodes()
Файл, сгенерированный этим скриптом
Проблема в том, что теперь я могу использовать только размер US Letter и никакие другие нестандартные размеры. Я пробовал несколько вариантов, но ни один не работал.
Пытается:
from reportlab.lib.pagesizes import letter
c = canvas.Canvas(codeName+".pdf", pagesize=letter)
barcode_value = codeName
barcode128 = code128.Code128(
barcode_value,
barHeight=16.7564*mm,
barWidth=44.45*mm,
fontSize=15,
humanReadable = True
)
x = 7.526 * mm
for i in range(4):
y = 265.524 * mm
i=0
while i < 15:
barcode128.drawOn(c, x, y)
y = y - 18 * mm
i+=1
break
x=x+(70*mm)
break
c.save()
и здесь — требуемый формат, в который он должен вписываться. Было бы неплохо помочь.