mirror of
https://github.com/AxonByteDev/paperless-asn-label-generator.git
synced 2026-08-06 08:42:03 +00:00
Compare commits
No commits in common. "main" and "v0.1.2" have entirely different histories.
7 changed files with 163 additions and 798 deletions
35
CHANGELOG.md
35
CHANGELOG.md
|
|
@ -1,38 +1,5 @@
|
||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
## 0.1.6 - 2026-02-08
|
|
||||||
### Changed
|
|
||||||
- Mehrere Layout-Profile auswählbar (`L4731`, `L7160`) in GUI und CLI.
|
|
||||||
- Profilverwaltung in der GUI hinzugefügt (Profil speichern/laden/löschen) ohne manuelles JSON-Editieren.
|
|
||||||
- Standard-Profilname ist jetzt `Brother MFC-L2710DW` (alte `default`-Einträge werden automatisch migriert).
|
|
||||||
- Profile können jetzt per Button als JSON exportiert werden.
|
|
||||||
- Optionaler CLI-Modus für PDF-Erzeugung ohne GUI (`--cli ...`) inkl. Layoutwahl und Seiten-/Labelmodus.
|
|
||||||
|
|
||||||
## 0.1.5 - 2026-02-08
|
|
||||||
### Changed
|
|
||||||
- Startposition auf angebrochenem Bogen ist jetzt einstellbar (`1..189`), inklusive korrekter Seitenberechnung und Druckplatzierung.
|
|
||||||
- Option nach PDF-Erzeugung eingeführt: `none`, `file` oder `folder` direkt öffnen.
|
|
||||||
- Ordner/Datei-Öffnen ist plattformstabil über `subprocess` umgesetzt (ohne `os.system`), auch bei Sonderzeichen im Pfad.
|
|
||||||
- Im Modus `A4 Blätter` wird jetzt exakt die gewählte Blattanzahl erzeugt (erstes Blatt ab Startposition auffüllen, kein zusätzlich angebrochenes Folgeblatt).
|
|
||||||
|
|
||||||
## 0.1.4 - 2026-02-08
|
|
||||||
### Changed
|
|
||||||
- Vorschau für `CODE128` rendert jetzt als echter Barcode statt Platzhalter.
|
|
||||||
- Vorschau-Layout wurde neu ausbalanciert: QR kleiner, Text deutlich größer/lesbarer, kein Überlappen von CODE128 und Text.
|
|
||||||
- Fensterbreite und Vorschaufläche wurden vergrößert, damit alle UI-Elemente und der Vorschau-Text vollständig sichtbar bleiben.
|
|
||||||
- Statusmeldungen in der UI sind vereinheitlicht (`[INFO]`, `[OK]`, `[WARN]`, `[ERROR]`) und farblich klar getrennt.
|
|
||||||
- Layout verhält sich auf kleineren Displays robuster (reduzierte `minsize`, bessere Spalten-Gewichtung, umbrochene Hilfstexte/Statuszeilen).
|
|
||||||
|
|
||||||
## 0.1.3 - 2026-02-08
|
|
||||||
### Changed
|
|
||||||
- Kalibrierungs-Eingaben sind jetzt als sichtbare Delta-Werte ausgelegt (Default `0.0` in der UI), während intern weiterhin die Basiswerte genutzt werden.
|
|
||||||
- Persistierte Kalibrierung speichert den Modus explizit als `calibration_mode = "delta"`; bestehende Legacy-Configs ohne Marker werden kompatibel übernommen.
|
|
||||||
- GUI-Titel zeigt jetzt die aktuelle App-Version an.
|
|
||||||
|
|
||||||
### Fixed
|
|
||||||
- Doppelten `_build_ui()`-Aufruf entfernt, damit beim Start keine doppelten Widgets oder Event-Bindings entstehen.
|
|
||||||
- Fehler beim Laden/Speichern der `config.json` werden in der Oberfläche sichtbar angezeigt statt still ignoriert.
|
|
||||||
|
|
||||||
## 0.1.2 - 2026-02-03
|
## 0.1.2 - 2026-02-03
|
||||||
### Added
|
### Added
|
||||||
- Persistente Einstellungen (config.json) im User-Config-Verzeichnis (XDG_CONFIG_HOME / ~/.config, macOS Application Support, Windows APPDATA).
|
- Persistente Einstellungen (config.json) im User-Config-Verzeichnis (XDG_CONFIG_HOME / ~/.config, macOS Application Support, Windows APPDATA).
|
||||||
|
|
@ -40,4 +7,4 @@
|
||||||
- Button "Config löschen": löscht config.json und setzt Standard-Preset-Werte zurück.
|
- Button "Config löschen": löscht config.json und setzt Standard-Preset-Werte zurück.
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
- Stabileres Laden/Speichern (fehlerhafte config bricht GUI nicht ab).
|
- Stabileres Laden/Speichern (fehlerhafte config bricht GUI nicht ab).
|
||||||
205
README.md
205
README.md
|
|
@ -1,205 +1,120 @@
|
||||||
# paperless-ngx ASN Label Generator (GUI + CLI)
|
# paperless-ngx ASN Label Generator (GUI) – Avery L4731 / L4731REV
|
||||||
|
|
||||||
Kleines Tool (Tkinter + CLI), das **ASN-Labels als PDF** erzeugt – wahlweise **QR** oder **Code128** – für mehrere **A4-Etikettenlayouts**.
|
GUI-Tool (Tkinter), das ASN-Labels als PDF erzeugt – QR oder Code128 – inkl. Kalibrierung (Offset & Pitch-Drift) für saubere Ausdrucke auf echten Etikettenbögen.
|
||||||
|
|
||||||
✅ Ideal, um in paperless-ngx sauber mit ASN-Barcodes zu arbeiten
|
|
||||||
✅ Mit **Kalibrierung** (Offset X/Y + Pitch-Drift) für exakte Druckausrichtung
|
|
||||||
✅ **Persistente Einstellungen**: Drucker-Kalibrierwerte werden automatisch gespeichert
|
|
||||||
✅ **Mehrere Layouts** (z. B. `L4731`, `L7160`)
|
|
||||||
✅ **Drucker-Profile** speichern/laden (ohne JSON-Edit)
|
|
||||||
✅ **CLI-Modus** für Automatisierung
|
|
||||||
✅ **Reset-Button**: “Config löschen” setzt alles auf Standardwerte zurück
|
|
||||||
|
|
||||||
> Hinweis: Inoffizielles Tool, nicht affiliated mit paperless-ngx.
|
> Hinweis: Inoffizielles Tool, nicht affiliated mit paperless-ngx.
|
||||||
|
|
||||||
<p align="center">
|
|
||||||
<img src="assets/screenshot.png" alt="Screenshot der Anwendung" width="900">
|
|
||||||
</p>
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Voraussetzungen
|
## Voraussetzungen
|
||||||
|
|
||||||
- **Python 3.10+**
|
- **Python 3.10+**
|
||||||
- Optional: **Git** (nur wenn Installation direkt von GitHub erfolgt)
|
- **Git** (nur nötig, wenn du direkt von GitHub installieren willst)
|
||||||
- **Linux**: `python3-tk` (Tkinter GUI Paket)
|
- Auf **Linux** ggf. zusätzlich: **Tkinter** (siehe unten)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Installation & Start
|
## Installation & Start
|
||||||
|
|
||||||
> **Wichtig (Linux):** Viele Distributionen blockieren systemweite `pip3 install ...` Installationen (PEP 668).
|
### Windows (empfohlen)
|
||||||
> Nutze dort am besten **pipx** oder eine **virtuelle Umgebung**.
|
|
||||||
|
|
||||||
### Windows
|
#### 1) Python installieren
|
||||||
|
- Lade Python von der offiziellen Seite.
|
||||||
|
- **Wichtig:** Beim Installer unbedingt **„Add Python to PATH“** aktivieren.
|
||||||
|
|
||||||
#### Empfohlen: pipx (sauber, isoliert)
|
Prüfen:
|
||||||
1) Python installieren (bei python.org) und **„Add Python to PATH“** aktivieren.
|
|
||||||
2) pipx installieren:
|
|
||||||
```bash
|
```bash
|
||||||
python -m pip install --upgrade pip
|
python --version
|
||||||
python -m pip install pipx
|
pip --version
|
||||||
python -m pipx ensurepath
|
|
||||||
```
|
```
|
||||||
Terminal neu öffnen.
|
|
||||||
|
|
||||||
3) Installieren & starten:
|
#### 2) Installation direkt von GitHub
|
||||||
```bash
|
```bash
|
||||||
pipx install git+https://github.com/MrLetsPlay4Fun/paperless-asn-label-generator.git
|
pip install git+https://github.com/DEINNAME/paperless-asn-label-generator
|
||||||
paperless-asn-labels
|
paperless-asn-labels
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Alternative: Virtualenv
|
> Wenn `pip` meldet, dass `git` fehlt: Git für Windows installieren, dann nochmal versuchen.
|
||||||
```bash
|
|
||||||
python -m venv .venv
|
|
||||||
.venv\Scripts\activate
|
|
||||||
pip install git+https://github.com/MrLetsPlay4Fun/paperless-asn-label-generator.git
|
|
||||||
paperless-asn-labels
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### macOS
|
### macOS
|
||||||
|
|
||||||
#### Empfohlen: pipx
|
#### 1) Python prüfen/ installieren
|
||||||
1) (Optional) Python via Homebrew:
|
Prüfen:
|
||||||
|
```bash
|
||||||
|
python3 --version
|
||||||
|
pip3 --version
|
||||||
|
```
|
||||||
|
|
||||||
|
Falls Python fehlt oder zu alt ist, am einfachsten über Homebrew:
|
||||||
```bash
|
```bash
|
||||||
brew install python
|
brew install python
|
||||||
```
|
```
|
||||||
|
|
||||||
2) pipx installieren:
|
#### 2) Installation direkt von GitHub
|
||||||
```bash
|
```bash
|
||||||
python3 -m pip install --upgrade pip
|
pip3 install git+https://github.com/DEINNAME/paperless-asn-label-generator
|
||||||
python3 -m pip install pipx
|
|
||||||
python3 -m pipx ensurepath
|
|
||||||
```
|
|
||||||
Terminal neu öffnen.
|
|
||||||
|
|
||||||
3) Installieren & starten:
|
|
||||||
```bash
|
|
||||||
pipx install git+https://github.com/MrLetsPlay4Fun/paperless-asn-label-generator.git
|
|
||||||
paperless-asn-labels
|
paperless-asn-labels
|
||||||
```
|
```
|
||||||
|
|
||||||
|
> Falls `paperless-asn-labels` nicht gefunden wird, starte einmal neu das Terminal oder nutze:
|
||||||
|
```bash
|
||||||
|
python3 -m paperless_asn_label_generator
|
||||||
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### Linux (Debian/Ubuntu/Pop!_OS)
|
### Linux
|
||||||
|
|
||||||
#### 1) Tkinter installieren (GUI)
|
#### 1) Python + pip prüfen
|
||||||
```bash
|
```bash
|
||||||
sudo apt update
|
python3 --version
|
||||||
sudo apt install -y python3-tk
|
pip3 --version
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 2) Empfohlen: pipx installieren
|
Falls nötig (Debian/Ubuntu):
|
||||||
```bash
|
```bash
|
||||||
sudo apt install -y pipx
|
sudo apt-get update
|
||||||
pipx ensurepath
|
sudo apt-get install -y python3 python3-pip
|
||||||
```
|
```
|
||||||
Terminal neu öffnen.
|
|
||||||
|
|
||||||
#### 3) Installieren & starten (GitHub)
|
#### 2) Tkinter installieren (wichtig für GUI)
|
||||||
|
Debian/Ubuntu:
|
||||||
```bash
|
```bash
|
||||||
pipx install git+https://github.com/MrLetsPlay4Fun/paperless-asn-label-generator.git
|
sudo apt-get install -y python3-tk
|
||||||
|
```
|
||||||
|
|
||||||
|
Fedora:
|
||||||
|
```bash
|
||||||
|
sudo dnf install -y python3-tkinter
|
||||||
|
```
|
||||||
|
|
||||||
|
Arch:
|
||||||
|
```bash
|
||||||
|
sudo pacman -S tk
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 3) Installation direkt von GitHub
|
||||||
|
```bash
|
||||||
|
pip3 install git+https://github.com/DEINNAME/paperless-asn-label-generator
|
||||||
paperless-asn-labels
|
paperless-asn-labels
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Alternative: Virtuelle Umgebung (wenn du pipx nicht willst)
|
|
||||||
```bash
|
|
||||||
python3 -m venv ~/.venvs/paperless-asn
|
|
||||||
source ~/.venvs/paperless-asn/bin/activate
|
|
||||||
pip install --upgrade pip
|
|
||||||
pip install git+https://github.com/MrLetsPlay4Fun/paperless-asn-label-generator.git
|
|
||||||
paperless-asn-labels
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Update
|
|
||||||
|
|
||||||
### Wenn mit pipx installiert
|
|
||||||
```bash
|
|
||||||
pipx upgrade paperless-asn-labels
|
|
||||||
```
|
|
||||||
|
|
||||||
Falls das Paket unter pipx anders heißt:
|
|
||||||
```bash
|
|
||||||
pipx upgrade-all
|
|
||||||
```
|
|
||||||
|
|
||||||
### Wenn in einer venv installiert
|
|
||||||
```bash
|
|
||||||
pip install -U --force-reinstall git+https://github.com/MrLetsPlay4Fun/paperless-asn-label-generator.git
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Nutzung
|
## Nutzung
|
||||||
|
|
||||||
- Start-Nummer wählen (z.B. 1 oder 190)
|
- Start-Nummer wählen (z.B. 1 oder 190)
|
||||||
- Layout wählen (z. B. `L4731` oder `L7160`)
|
|
||||||
- Prefix setzen (muss zu paperless-ngx passen)
|
- Prefix setzen (muss zu paperless-ngx passen)
|
||||||
- Führende Nullen einstellen (z.B. 7 → `ASN0000001`)
|
- Führende Nullen einstellen (z.B. 7 → `ASN0000001`)
|
||||||
- Menge als **Labels** oder **A4-Blätter**
|
- Menge als **Labels** oder **A4-Blätter**
|
||||||
- Optional: **Startposition auf Bogen** setzen (bei angebrochenem Blatt)
|
|
||||||
- Code-Typ: **QR** oder **CODE128**
|
- Code-Typ: **QR** oder **CODE128**
|
||||||
- Optional: **Nach PDF öffnen** (`none`, `file`, `folder`)
|
- Optional: Rahmen aktivieren (hilft beim Kalibrieren)
|
||||||
- Optional: **Rahmen aktivieren** (hilft beim Kalibrieren)
|
|
||||||
- Optional: Profil speichern/laden/löschen (z. B. je Drucker)
|
|
||||||
- „PDF erzeugen…“ → Datei speichern
|
- „PDF erzeugen…“ → Datei speichern
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Profile (Drucker-Profile)
|
|
||||||
|
|
||||||
Profile speichern deine aktuellen Einstellungen als Set (Layout, Kalibrierung, Startposition, Code-Typ usw.).
|
|
||||||
|
|
||||||
- Standardprofil: **`Brother MFC-L2710DW`**
|
|
||||||
- Buttons in der GUI:
|
|
||||||
- **Profil speichern**: aktuelle Einstellungen unter neuem Namen speichern
|
|
||||||
- **Profil laden**: gewähltes Profil aktivieren
|
|
||||||
- **Profil löschen**: Profil entfernen (Standardprofil ist geschützt)
|
|
||||||
- **Profile exportieren**: alle gespeicherten Profile als JSON-Datei exportieren
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## CLI-Modus (Automatisierung)
|
|
||||||
|
|
||||||
Du kannst PDFs ohne GUI erzeugen:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
paperless-asn-labels --cli --output /tmp/asn.pdf --layout L4731 --count 30 --prefix ASN --zeros 7 --kind QR
|
|
||||||
```
|
|
||||||
|
|
||||||
Seitenmodus (exakte Blattanzahl):
|
|
||||||
|
|
||||||
```bash
|
|
||||||
paperless-asn-labels --cli --output /tmp/asn_pages.pdf --layout L7160 --pages 2 --start-position 5 --kind CODE128
|
|
||||||
```
|
|
||||||
|
|
||||||
Alle Optionen:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
paperless-asn-labels --help
|
|
||||||
```
|
|
||||||
|
|
||||||
Hinweis: Wenn CLI-Optionen gesetzt sind (z. B. `--output`, `--count`, `--pages`), läuft das Tool automatisch im CLI-Modus.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Gespeicherte Einstellungen (Config)
|
|
||||||
|
|
||||||
Deine Kalibrierwerte & UI-Einstellungen werden automatisch gespeichert (persistente Config).
|
|
||||||
Der Speicherort ist:
|
|
||||||
|
|
||||||
- **Linux:** `~/.config/paperless-ngx-asn-labels/config.json` (oder `$XDG_CONFIG_HOME/...`)
|
|
||||||
- **macOS:** `~/Library/Application Support/paperless-ngx-asn-labels/config.json`
|
|
||||||
- **Windows:** `%APPDATA%\paperless-ngx-asn-labels\config.json`
|
|
||||||
|
|
||||||
Im Programm gibt es außerdem den Button **„Config löschen“**, der die Datei entfernt und auf Standardwerte zurücksetzt.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Prefix in paperless-ngx
|
## Prefix in paperless-ngx
|
||||||
|
|
||||||
Der Prefix muss zu deiner paperless-ngx Einstellung passen:
|
Der Prefix muss zu deiner paperless-ngx Einstellung passen:
|
||||||
|
|
@ -226,11 +141,15 @@ Wenn die Position nicht exakt passt:
|
||||||
## Entwicklung (Repo klonen & lokal starten)
|
## Entwicklung (Repo klonen & lokal starten)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone https://github.com/MrLetsPlay4Fun/paperless-asn-label-generator.git
|
git clone https://github.com/DEINNAME/paperless-asn-label-generator
|
||||||
cd paperless-asn-label-generator
|
cd paperless-asn-label-generator
|
||||||
|
|
||||||
python3 -m venv .venv
|
# Virtuelle Umgebung
|
||||||
source .venv/bin/activate
|
python -m venv .venv
|
||||||
|
# Windows:
|
||||||
|
# .venv\Scripts\activate
|
||||||
|
# macOS/Linux:
|
||||||
|
# source .venv/bin/activate
|
||||||
|
|
||||||
pip install -e .
|
pip install -e .
|
||||||
paperless-asn-labels
|
paperless-asn-labels
|
||||||
|
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 88 KiB |
|
|
@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
||||||
|
|
||||||
[project]
|
[project]
|
||||||
name = "paperless-asn-label-generator"
|
name = "paperless-asn-label-generator"
|
||||||
version = "0.1.6"
|
version = "0.1.2"
|
||||||
description = "GUI tool to generate ASN barcode/QR labels for paperless-ngx (A4/Avery L4731) with calibration."
|
description = "GUI tool to generate ASN barcode/QR labels for paperless-ngx (A4/Avery L4731) with calibration."
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
requires-python = ">=3.10"
|
requires-python = ">=3.10"
|
||||||
|
|
@ -31,3 +31,4 @@ package-dir = {"" = "src"}
|
||||||
|
|
||||||
[tool.setuptools.packages.find]
|
[tool.setuptools.packages.find]
|
||||||
where = ["src"]
|
where = ["src"]
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,2 +1,2 @@
|
||||||
__all__ = ["__version__"]
|
__all__ = ["__version__"]
|
||||||
__version__ = "0.1.6"
|
__version__ = "0.1.2"
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
from .app import main
|
from .app import main
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
raise SystemExit(main())
|
main()
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue