Dieses Repository enthält Skripte zum Erzeugen von Labels aus CSV-Exports von Part-DB.
Diese Labels werden zur Beschriftung der Elektronikbauteile im ZAM verwendet.
Die Skripte erzeugen ZPL-Code zur Verwendung mit dem Labeldrucker GK420t von Zebra.
Es werden zwei Labels pro Zeile mit je 48x24 mm erzeugt.
Es gibt zwei Varianten, da es im ZAM Schubladen mit nur einem Bauteil und welche mit zwei Bauteilen gibt:
`mklabel_single.py` erzeugt zwei Labels mit je einem Bauteil (also zwei Bauteile pro gedruckter Seite) und `mklabel_dual` erzeugt zwei Labels mit je zwei Bauteilen (also vier Bauteile pro Seite).
Entsprechend viele Bauteile müssen in der CSV-Eingabe stehen, damit keine Plätze leer bleiben.
## Vorbereitung
Um die Skripte verwenden zu können, müssen die Abhängigkeiten installiert werden.
Am einfachsten geht das mit einer virtuellen Umgebung für Python:
```bash
$ python3 -m venv env
$ source env/bin/activate
$ pip install -r requirements.txt
```
Der folgende Befehl muss vor dem ersten Aufruf der Skripte in der aktiven Shell ausgeführt werden:
```bash
$ source env/bin/activate
```
## CSV-Export aus Part-DB
Damit die Skripte funktionieren, müssen die Bauteile aus Part-DB wie folgt exportiert werden:
1. Part-DB so navigieren/filtern, dass alle gewünschten Bauteile in einer Liste angezeigt werden.
2. Bei den Bauteilen, für die Labels gedruckt werden sollen, das Auswahlhäkchen setzen.
3. Über der Liste taucht dann neben „x Bauteile ausgewählt“ ein Auswahlfeld für die Aktion auf. Dort ist „Export als CSV“ zu wählen und rechts daneben „Vollständig“ als Datenformat.
4. Mit „Ok“ bestätigen und die Datei abspeichern.
5. Die Datei in einem Texteditor(!) öffnen und die Reihenfolge der Teile prüfen und ggf. korrigieren. Die Reihenfolge in der CSV-Datei bestimmt die Reihenfolge auf den Labels!
## Erzeugen des ZPL-Codes
Zum Erzeugen des ZPL-Codes wird das gewünschte Skript mit der CSV-Datei als Parameter aufgerufen, z.B.
```bash
$ ./mklabel_single.py /tmp/export_Part_full.csv
```
Das Skript verarbeitet alle Bauteile aus der CSV-Datei und gibt eine Zeile ZPL-Code pro „Seite“ (eine Zeile an Labels) aus.
Die Ausgabe des obigen Befehls mit vier Bauteilen kann beispielsweise so aussehen:
Um das Layout zu überprüfen, kann eine Zeile ZPL-Code auf [labelary.com](https://labelary.com/viewer.html) in einem Online-Viewer gerendert werden.
## Senden des Codes an den Drucker
_Dieser Abschnitt beschreibt das Drucken mit Linux. Zum Drucken mit anderen Systemen gibt es bisher keine Erfahrung._
Zum Drucken muss einmalig der Drucker in CUPS eingerichtet werden. Dort ist als Treiber _Zebra ZPL Label Printer_ zu wählen. Es gibt dazu von Zebra eine [ausführliche Anleitung](https://www.zebra.com/content/dam/support-dam/en/documentation/unrestricted/guide/software/ZSN108111-v4_CUPS_Installation.pdf).
Ist der Treiber installiert, können Labels wie folgt gedruckt werden (Achtung: bitte vorher mit Einzelseiten testen):
```bash
$ ./mklabel_single.py /tmp/export_Part_full.csv | lpr -o raw -P Zebra_GK420t -