commit fd0d14c9095eb44ba163af6e08d148b0c31e5417 Author: Jan Umbach Date: Mon Jul 31 18:04:34 2023 +0200 init diff --git a/label.png b/label.png new file mode 100644 index 0000000..a70572c Binary files /dev/null and b/label.png differ diff --git a/main.py b/main.py new file mode 100644 index 0000000..3fae14a --- /dev/null +++ b/main.py @@ -0,0 +1,96 @@ +from pathlib import Path +import os +import time +import logging +from watchdog.observers import Observer +from watchdog.events import LoggingEventHandler + +from pdf2image import convert_from_path + +labelPathDir = "/home/jan/Downloads/" + +labelPath = labelPathDir + "label.pdf" +labelPathRot90 = labelPathDir + "label_rot90.pdf" + + +printer_identifier = "tcp://192.168.1.70" +dpi = 300 + +imageHeight29mm = 343 +imageHeight62mm = 745 +imageHeightVersand102 = 3505 + + +def checkTolerance(isNum, shouldNum): + tol = 10 + maxNum = shouldNum + tol + minNum = shouldNum - tol + return (isNum < maxNum and isNum > minNum) + + +def printPDF(path): + if (os.path.isfile(path)): + print("label detected", path) + pages = convert_from_path(path, dpi) + for page in pages: + + try: + page.save('label.png', 'PNG') + + pngHeight = page.height + if (path == labelPathRot90): + pngHeight = page.width + print("height: ", pngHeight) + + labelHeight = 0 + + if (checkTolerance(pngHeight, imageHeight29mm)): + labelHeight = 29 + if (checkTolerance(pngHeight, imageHeight62mm)): + labelHeight = 62 + + if (checkTolerance(pngHeight, imageHeightVersand102)): + labelHeight = 102 + h = page.height/2 + spacing = 100 + + # box=(left, upper, right, lower) + page.crop((0, spacing, page.width, h-spacing) + ).save('label.png', 'PNG') + + if (labelHeight != 0): + os.system('brother_ql -m QL-1060N -p ' + + printer_identifier + ' print -d -l ' + str(labelHeight) + ' label.png -r 90') + else: + print("UNKNOWN LABEL PICTURE HEIGHT!") + except: + print("An exception occurred") + os.remove(path) + + +printPDF(labelPath) +printPDF(labelPathRot90) + + +class Event(LoggingEventHandler): + def on_modified(self, event): + path = event.src_path + if (path == labelPath or path == labelPathRot90): + printPDF(path) + + +if __name__ == "__main__": + logging.basicConfig(level=logging.INFO, + format='%(asctime)s - %(message)s', + datefmt='%Y-%m-%d %H:%M:%S') + path = labelPathDir # sys.argv[1] if len(sys.argv) > 1 else '.' + event_handler = Event() + observer = Observer() + observer.schedule(event_handler, path, recursive=True) + observer.start() + try: + while True: + time.sleep(1) + except KeyboardInterrupt: + observer.stop() + observer.join() diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..a2c8cd4 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,3 @@ +brother_ql +watchdog +pdf2image \ No newline at end of file