Hallo,
ich suche Hilfe bei der Erstellung eines automatischen Scripts bzw. der nötigen und sinnvollen Tools, was folgendes Aufgabe erledigen soll. Ich kann zwar etwas progammieren (Phython, VBA) und und damit auch ein Script Verstehen oder Ändern, solange es nicht allzu komplex ist, jedoch finde ich den Einstieg etwas eigenens zu erstellen nach wie vor schwer.
Folgendes Problem: Ich nutze paperless-ngx auf einem Linux-Server (Raspi5) und habe einen automatischen Einzugsscanner. Dieser kann jedoch nur einseitig scannen. Hat man nun doppelseitig bedruckte Dokumente, so scanne ich zuerst den Stapel, drehe ihn dann um für einen weiteren Scan und nutze dann das Windows-tool pdfSAM um diese beiden PFDs zusammen zu mischen.
Diesen Vorgang möchte ich nun wie folgt mit den poppler-pdf utils automatisieren.
statt in den /consume ordner von paperless ngx wähle ich beim scannen einen anderen Ordner aus, nenne wir ihn /DuplexScan
hier werden beide Scans, der Name besteht aus einem fixen Namen und eine aufsteigenden Zahl, bsp Scan_01.pdf und Scan_02.pdf (später dann _42 und_ 43, usw.), abgelegt.
nun soll ein Script diesen Ordner alle x (1-5sec) überwachen und folgendes tun:
befindet sich 1 PDF im Verzeichniss –> nichts machen und beenden befinden sich 2 PDFs im Verzeichniss –> verschiebe alle pdfs in den ordner /DuplexScan/fail mit dem Namen %Datum_<Filename> und beenden befindet sich exakt 2 PDF im Verzeichniss –> weiter
Anhand der aufstegenden Numerierung wird die Reihenfolge festgelegt mit pdfinfo Scan_<kleinereZahl>.pdf.pdf und Scan_<groesereZahl>.pdf.pdf wird die Seitenanzahl beider Dokumente gesucht und vergleichen: ... Pages: 6 ...
Ist diese zahl nicht gleich –> verschiebe beide pdfs in den ordner /DuplexScan/fail mit dem Namen %Datum_Pagefail_<Filename> sonst weiter
Führe für beide PDF folgendes aus:
pdfseparate Scan_<kleinereZahl>.pdf 1_%d.pdf
pdfseparate Scan_<größereZahl>.pdf 2_%d.pdf
ggf. nochmal prüfen ob die Anzahl der pdfs im Verzeichnis Page*2 Einzeldokumente + 2 Ausgangsdokumenten entspricht und falls nicht wieder in /DuplexScan/fail
Anschließend wird anhand der in 4 ermitelten Seitenanzahl jeweils das erste paket mit aufsteigender, das zweite mit absteigender Nummerierung in den folgende Befehl gesetzt:
pdfunite 1_1.pdf 2_6.pdf 1_2.pdf 2_5.pdf 1_3.pdf 2_4.pdf 1_4.pdf 2_3.pdf 1_5.pdf 2_2.pdf 1_6.pdf 2_1.pdf File_result.pdf
Das finale Dokument wird in der /consume ordner von paperless ngx verschoben die 2 Ausgangsscans in den Ornder /DuplexScan/archive und alle anderen gelöscht so das der ornder wieder leer ist.
Klar muss der Prozess fertiggestellt sein bevor er wieder starten, bzw. es muss dann erkannt werden das der Prozess läuft, sonst besteht ja die Gefahr, dass nach dem Erzeugen der Einzeldokumenten der zweite gestartete Prozess festgestellt das mehr als 2 Dokumente im Ordner liegen und diese nach /fail verschiebt.
Was haltet ihr grundsätzlich von dem Ansatz? Zu umständlich gedacht, oder geht es auch einfacher? Und nun fehlt es mit an einem Grundgerüst.
Cronjob starte das Script? Wie oft? Wie verhindert man zu lange Wartezeiten und den Start von zwei Tasks? Und welche Befehle sollte man verwenden.
Ich wäre sehr dankbar für Unterstützung. vg
Bearbeitet von rklm:
Tippfehler im Titel korrigiert