Compare commits

...

12 commits
v0.1.2 ... main

Author SHA1 Message Date
MrLetsPlay4Fun
d07abc8cab Change readme picture 2026-02-08 10:20:34 +01:00
MrLetsPlay4Fun
d2f1f3c6b0 bump 0.1.6: layouts, profiles, cli, profile export 2026-02-08 09:38:05 +01:00
MrLetsPlay4Fun
4c669debb5 add start-position printing, post-open options, subprocess opener, exact A4 sheet mode (v0.1.5) 2026-02-08 09:12:05 +01:00
MrLetsPlay4Fun
ae067c5d92 Merge branch 'main' of https://github.com/MrLetsPlay4Fun/paperless-asn-label-generator 2026-02-08 08:57:15 +01:00
MrLetsPlay4Fun
3728f0df51 Edit picrure 2026-02-08 08:57:09 +01:00
MrLetsPlay4Fun
07124f52e7
Add files via upload 2026-02-08 08:54:36 +01:00
MrLetsPlay4Fun
739813b990 fix(ui): widen window and preview layout 2026-02-08 08:50:07 +01:00
MrLetsPlay4Fun
71ed2e5c3e Fix-Header 2026-02-08 08:31:23 +01:00
MrLetsPlay4Fun
6f7476f137 fix(ui): dedupe init, bump 0.1.3 2026-02-08 08:29:23 +01:00
MrLetsPlay4Fun
c448e8bb75 Update README 2026-02-03 18:04:09 +01:00
MrLetsPlay4Fun
904384227b Add screenshot to README 2026-02-03 17:59:31 +01:00
MrLetsPlay4Fun
a636675bbe Update README: installation + update instructions for all OS 2026-02-03 17:55:04 +01:00
7 changed files with 796 additions and 161 deletions

View file

@ -1,5 +1,38 @@
# 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).
@ -7,4 +40,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).

201
README.md
View file

@ -1,120 +1,205 @@
# paperless-ngx ASN Label Generator (GUI) Avery L4731 / L4731REV # paperless-ngx ASN Label Generator (GUI + CLI)
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. Kleines Tool (Tkinter + CLI), das **ASN-Labels als PDF** erzeugt wahlweise **QR** oder **Code128** für mehrere **A4-Etikettenlayouts**.
✅ 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+**
- **Git** (nur nötig, wenn du direkt von GitHub installieren willst) - Optional: **Git** (nur wenn Installation direkt von GitHub erfolgt)
- Auf **Linux** ggf. zusätzlich: **Tkinter** (siehe unten) - **Linux**: `python3-tk` (Tkinter GUI Paket)
--- ---
## Installation & Start ## Installation & Start
### Windows (empfohlen) > **Wichtig (Linux):** Viele Distributionen blockieren systemweite `pip3 install ...` Installationen (PEP 668).
> Nutze dort am besten **pipx** oder eine **virtuelle Umgebung**.
#### 1) Python installieren ### Windows
- Lade Python von der offiziellen Seite.
- **Wichtig:** Beim Installer unbedingt **„Add Python to PATH“** aktivieren.
Prüfen: #### Empfohlen: pipx (sauber, isoliert)
1) Python installieren (bei python.org) und **„Add Python to PATH“** aktivieren.
2) pipx installieren:
```bash ```bash
python --version python -m pip install --upgrade pip
pip --version python -m pip install pipx
python -m pipx ensurepath
``` ```
Terminal neu öffnen.
#### 2) Installation direkt von GitHub 3) Installieren & starten:
```bash ```bash
pip install git+https://github.com/DEINNAME/paperless-asn-label-generator pipx install git+https://github.com/MrLetsPlay4Fun/paperless-asn-label-generator.git
paperless-asn-labels paperless-asn-labels
``` ```
> Wenn `pip` meldet, dass `git` fehlt: Git für Windows installieren, dann nochmal versuchen. #### Alternative: Virtualenv
```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
#### 1) Python prüfen/ installieren #### Empfohlen: pipx
Prüfen: 1) (Optional) Python via Homebrew:
```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) Installation direkt von GitHub 2) pipx installieren:
```bash ```bash
pip3 install git+https://github.com/DEINNAME/paperless-asn-label-generator python3 -m pip install --upgrade pip
paperless-asn-labels python3 -m pip install pipx
python3 -m pipx ensurepath
``` ```
Terminal neu öffnen.
> Falls `paperless-asn-labels` nicht gefunden wird, starte einmal neu das Terminal oder nutze: 3) Installieren & starten:
```bash ```bash
python3 -m paperless_asn_label_generator pipx install git+https://github.com/MrLetsPlay4Fun/paperless-asn-label-generator.git
paperless-asn-labels
``` ```
--- ---
### Linux ### Linux (Debian/Ubuntu/Pop!_OS)
#### 1) Python + pip prüfen #### 1) Tkinter installieren (GUI)
```bash ```bash
python3 --version sudo apt update
pip3 --version sudo apt install -y python3-tk
``` ```
Falls nötig (Debian/Ubuntu): #### 2) Empfohlen: pipx installieren
```bash ```bash
sudo apt-get update sudo apt install -y pipx
sudo apt-get install -y python3 python3-pip pipx ensurepath
``` ```
Terminal neu öffnen.
#### 2) Tkinter installieren (wichtig für GUI) #### 3) Installieren & starten (GitHub)
Debian/Ubuntu:
```bash ```bash
sudo apt-get install -y python3-tk pipx install git+https://github.com/MrLetsPlay4Fun/paperless-asn-label-generator.git
```
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: Rahmen aktivieren (hilft beim Kalibrieren) - Optional: **Nach PDF öffnen** (`none`, `file`, `folder`)
- 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:
@ -141,15 +226,11 @@ Wenn die Position nicht exakt passt:
## Entwicklung (Repo klonen & lokal starten) ## Entwicklung (Repo klonen & lokal starten)
```bash ```bash
git clone https://github.com/DEINNAME/paperless-asn-label-generator git clone https://github.com/MrLetsPlay4Fun/paperless-asn-label-generator.git
cd paperless-asn-label-generator cd paperless-asn-label-generator
# Virtuelle Umgebung python3 -m venv .venv
python -m venv .venv source .venv/bin/activate
# Windows:
# .venv\Scripts\activate
# macOS/Linux:
# source .venv/bin/activate
pip install -e . pip install -e .
paperless-asn-labels paperless-asn-labels

BIN
assets/screenshot.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

View file

@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
[project] [project]
name = "paperless-asn-label-generator" name = "paperless-asn-label-generator"
version = "0.1.2" version = "0.1.6"
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,4 +31,3 @@ package-dir = {"" = "src"}
[tool.setuptools.packages.find] [tool.setuptools.packages.find]
where = ["src"] where = ["src"]

View file

@ -1,2 +1,2 @@
__all__ = ["__version__"] __all__ = ["__version__"]
__version__ = "0.1.2" __version__ = "0.1.6"

View file

@ -1,4 +1,4 @@
from .app import main from .app import main
if __name__ == "__main__": if __name__ == "__main__":
main() raise SystemExit(main())

File diff suppressed because it is too large Load diff