Änderungen von Dokument Paperless NGX

Zuletzt geändert von Daniel Herrmann am 2026/02/22 11:41

Von Version Icon 15.1 Icon
bearbeitet von Daniel Herrmann
am 2025/10/24 20:21
Änderungskommentar: Es gibt keinen Kommentar für diese Version
Auf Version Icon 17.1
bearbeitet von Daniel Herrmann
am 2026/02/22 11:41
Änderungskommentar: Es gibt keinen Kommentar für diese Version

Zusammenfassung

Details

Icon Seiteneigenschaften
Inhalt
... ... @@ -62,17 +62,16 @@
62 62  
63 63  **Aus diesem Grund wird auf jedes Dokument einen spezieller QR Code aufgedruckt**. Der QR code wird vom Post-Consume Script verwendet um die Metadaten in Paperless zuzuordnen. Weiterhin können Daten übermittelt werden, die dann mittels Webhook an N8n übermittelt werden und dort im Workflow verwendet werden können. Der Aufbau orientiert sich an dem Aufbau eines **JSON Web Tokens (JWT).**
64 64  
65 +=== Erzeugung des QR Codes ===
65 65  
66 -=== Barcode erzeugen ===
67 +Der Prozess zur Erzeugung eines QR Codes funktioniert wie folgt:
67 67  
68 -Der Prozess zur Erzeugung eines QR Codes ist wie folgt:
69 -
70 70  * **Payload (Daten) festlegen**. Einige Werte sind verpflichtend, andere können nach Bedarf optional hinzugefügt werden.
71 -* JWT erzeugen und signieren. der JWT besteht aus drei Teilen:
70 +* **JWT** erzeugen und signieren. der JWT besteht aus drei Teilen:
72 72  ** **Header**: **alg** (Algorithmus) und **typ** (JWT) sind verpflichtend. Zusätzlich fügen wir einen Timestamp, eine eindeutige ID und eine Gültigkeitsdauer hinzu.
73 73  ** **Body**: beinhaltet die eigentlichen Daten.
74 74  ** **Signature**: Mit Hilfe eines Secrets und wird die Signatur erzeugt und automatisch angehängt.
75 -* PDF417 code erzeugen: ein JWT ist per Definition URL safe und kann daher einfach in ein QR code umgewandelt werden.
74 +* **QR code erzeugen**: ein JWT ist per Definition URL safe und kann daher einfach in ein QR code umgewandelt werden.
76 76  
77 77  === Header ===
78 78  
... ... @@ -172,7 +172,6 @@
172 172  {{success}}
173 173  **Algorithmus**
174 174  
175 -
176 176  Von den meisten Libraries werden symmetrische und asymmetrische Signaturen unterstützt. Die Verwendung eines symmetrischen Algorithmus ist für uns einfacher.
177 177  
178 178  Für diesen Anwendungsfall nutzen wir **HS256** (HMAC mit SHA-256 Algorithmus).
... ... @@ -271,23 +271,25 @@
271 271  
272 272  Unsere bevorzugte Library ist **pyjwt**. Diese ist auch in **paperless nativ vorhanden**, sodass wir uns für die Implementierung mittels **pyjwt** entschieden haben.
273 273  
274 -=== PDF417 Code ===
272 +=== QR Code ===
275 275  
276 -Als Format für den Code wurde PDF417 ausgewählt, da dieser mehr Platz und Fehlerkorrektur bietet. Weiterhin gibt es eine einfach zu nutzende Library für Python (Erzeugung) und PDF417 wird von ZXING unterstützt, welches in Paperless eingebettet ist. Ein solcher Barcode sieht beispielsweise so aus:
274 +Als Format für den Code wurde ein Standard QR Code ausgewählt, da dieser mehr Platz und Fehlerkorrektur bietet. Es wurde ebenfalls mit PDF417 Codes experimentiert, jedoch funktioniert die Erkennung mit Python Libraries nur sehr schlecht. Ein QR Code sieht beispielsweise so aus:
277 277  
276 +[[image:Screenshot 2026-02-22 at 11.36.43.png||height="150"]]
278 278  
279 -[[image:barcode.jpg||height="250"]]
280 -
281 -Daraus kann dann eine Base64 basierte Repräsentation berechnet werden, die einfach in Docuseal hochgeladen werden kann.
282 -
283 -=== Referenz-Implementierung ===
284 -
285 -Eine Referenz-Implementierung befindet sich im Makerspace Gitlab: [[https:~~/~~/git.makerspace-darmstadt.de/makerspace-it-infrastructure/mitgliederverwaltung/paperless-pdf417-reference>>url:https://git.makerspace-darmstadt.de/makerspace-it-infrastructure/mitgliederverwaltung/paperless-pdf417-reference]]
286 -
287 287  === Post Consumption Script ===
288 288  
289 289  Die eigentliche Zuordnung der Meta-Daten erfolgt über ein so genanntes Post Consumption Script. Dieses befindet sich ebenfalls im Makerspace Gitlab: [[https:~~/~~/git.makerspace-darmstadt.de/makerspace-it-infrastructure/mitgliederverwaltung/paperless-post-consumption-script#>>url:https://git.makerspace-darmstadt.de/makerspace-it-infrastructure/mitgliederverwaltung/paperless-post-consumption-script]]
290 290  
282 +Das Script macht drei Dinge:
283 +
284 +* Es scannt jedes neue Dokument nach eingebetteten QR Codes
285 +* Jeder gefundene Code wird versucht als JWT zu Parsen. Fehler werden ignoriert
286 +* Wird ein Code erfolgreich geparsed, wird die Signatur validiert. Wenn erfolgreich:
287 +** werden die Meta-Daten über die Paperless API zugewiesen
288 +** ein N8n Workflow "[[Paperless Document Consumed>>url:https://n8n.mksp-da.de/workflow/4HYqb15erC7Q9vYK/executions/27908]]" wird ausgeführt. Dieser erhält den Inhalt des QR Code als Parameter (inklusive eventuell übermittelter zusätzlicher Daten) und kann automatisch Aktionen ausführen - so wird beispielsweise der Signaturvorgang im Backend als "beendet" markiert.
289 +** Je nach Signatur-Typ löst das Backend dann automatisch Folgeaktionen aus.
290 +
291 291  == Paperless Berechtigungen ==
292 292  
293 293  Paperless NGX hat ein Berechtigungssystem, welches sich über fast alle Ressourcen erstreckt. Grundsätzlich gibt es **Benutzer** und **Gruppen**. Berechtigungen können dann global vergeben werden (Sichtbarkeit von Features) und zusätzlich auf Objektebene vergeben werden.
Icon Screenshot 2026-02-22 at 11.36.43.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.dherrman
Größe
... ... @@ -1,0 +1,1 @@
1 +217.5 KB
Inhalt Icon