paperless-asn-qr-codes/paperless_asn_qr_codes/main.py

41 lines
1.2 KiB
Python
Raw Normal View History

2023-11-18 17:59:00 +01:00
import argparse
from reportlab.lib.units import mm, cm
from reportlab_qrcode import QRCodeImage
from paperless_asn_qr_codes import avery_labels
2023-11-25 16:40:09 +01:00
def render(c, x, y):
2023-11-18 17:59:00 +01:00
global startASN
barcode_value = f"ASN{startASN:07d}"
startASN = startASN + 1
2023-11-25 16:40:09 +01:00
qr = QRCodeImage(barcode_value, size=y * 0.9)
qr.drawOn(c, 1 * mm, y * 0.05)
c.setFont("Helvetica", 2 * mm)
c.drawString(y, (y - 2 * mm) / 2, barcode_value)
2023-11-18 17:59:00 +01:00
def main():
parser = argparse.ArgumentParser(
2023-11-25 16:40:09 +01:00
prog="paperless-asn-qr-codes",
description="CLI Tool for generating paperless ASN labels with QR codes",
)
parser.add_argument("start_asn")
parser.add_argument("output_file")
parser.add_argument(
"--format", choices=avery_labels.labelInfo.keys(), default="averyL4731"
)
2023-11-18 17:59:00 +01:00
args = parser.parse_args()
global startASN
startASN = int(args.start_asn)
label = avery_labels.AveryLabel(args.format)
2023-11-18 17:59:00 +01:00
label.open(args.output_file)
# by default, we render all labels possible on a single sheet
2023-11-25 16:40:09 +01:00
count = (
avery_labels.labelInfo[args.format].labels_horizontal
* avery_labels.labelInfo[args.format].labels_vertical
)
label.render(render, count)
2023-11-18 17:59:00 +01:00
label.close()