Hallo zusammen,
GEODRUCK.ZIP
Version vom 09.08.26 inklusive einem Skript das drucken und konvertieren kann.
Ein Gedanke, der mir schon eine Weile durch den Kopf geisterte war:
CUPS (Das Drucksystem auf den meisten Linux-PCs) kann doch mit Postskript-Dateien umgehen. Warum soll ich da erst etwas umständlich nach PDF konvertieren?
Ich hatte dann ein klein wenig recherchiert und fand heraus, das das komplette System sich auch über die Kommandozeile / die Shell bedienen lässt.
die Zeile lp dateiname reicht (nach ein wenig Vorarbeit) bereits aus um eine PS-Datei auszudrucken. Die Vorarbeit besteht zum einen darin mit dem Befehl lpstat -p -d herauszufinden, welche Drucker sind installiert und zum anderen mit dem Befehl lpoptions -d Druckername einen davon zum Standarddrucker zu machen. Drucken geht aber auch mit dem Befehl lp Druckername Dateiname also ohne einen Standarddrucker. Soweit so gut, ich bekomme jetzt also eine PostSkriptdatei, wie sie PC/GEOS Mit der Anweisung "In Datei drucken" erstellt, ausgedruckt.
Bei Surfen im Netz stolperte ich dann über das Paket inotify, ein Kernel naher Dienst der es ermöglicht das Dateisystem umfassend auf Veränderungen zu überwachen UND abhängig davon Anweisungen auszuführen, also ein Programm zu starten, oder eine Meldung ausgeben, ins log schreiben usw..
Neben der Möglichkeit mit inotifywait zu überwachen, ob eine Datei neu angelegt, gelöscht oder einfach nur bearbeitet wurde gibt es auch die Option, sich melden zu lasen, wenn eine Datei nach der Bearbeitung wieder geschlossen wird. Der pefekte Kandidat für meinen Wunsch zu drucken.![]()
Ein wenig mehr Bastelarbeit führte dann zum folgenden Skript, dass ich bei mir schlicht als /home/meins/bin/geodruck.sh abgelegt habe.
#!/bin/bash
MONITOR_DIR="/home/meins/dosbox/DRUCKEN.PS"
inotifywait -m -e close_write --format '%w%f' "$MONITOR_DIR" | while read FILE; do
echo "Drucke Datei: $FILE"
lp "$FILE"
sleep 2 # Kurze Pause, um den Druck-Spooler nicht zu überlasten
done
Erläuterungen dazu:
DRUCKEN.PS ist der Standardname der Spooldatei im Deutschen Geos. Den Pfad habe ich allerdings mit der paths Anweisung in der GEOS.INI auf das Rootverzeichnis meiner DosBox gelegt, damit ich das mit allen zum Testen installierten Installationen verwenden kann.
inotifywait wird mit Parameter (-m) aufgerufen, das verhindert, das es sich nach dem ersten Ergebnis beendet.
Wie oben erwähnt, habe ich einen Drucker zum Standard gemacht. Es klappt aber auch wenn man den Druckernamen in die Zeile einfügt. Es sind über CUPS auch noch viele andere Optionen machbar. Da sich das aber von Drucker zu Drucker unterscheiden kann gehe ich an dieser Stelle nicht weiter darauf ein.
Ebenfalls sollte es möglich sein mit Inotifywait auch mehr als eine Datei zu überwachen und mit verschiedenen Anweisungen zu versehen. So, dass im Ergebnis man über den Namen der Spool-Datei verschiedene Drucker oder Papiereinzüge verwenden kann. Ich brauchte hier halt schlicht nur die Möglichkeit zu Drucken. Im Moment starte ich das Skript noch von Hand und beende es mit STRG +C ebenso von Hand wieder. Das lässt sicher auch noch anders lösen...
Kurze Zusammenfassung:
Es werden benötigt CUPS als Druckersteuerung. ist auf vielen Linuxsystemen bereits Standard.
Das Paket Inotify muss installiert sein.
Ein Skript in einem erreichbaren Pfad (meinHome/bin bietet sich da an)
Hier mal mein Beispiel (Neu 30.07.26 Mit PDF-Skript):
geos-infobase.de/WBB_317/index.php?attachment/2095/
Ach ja.
Es gibt auch ein Paket CupsPDF.....
Wenn also einer doch mal ein PDF benötigt, behaupte ich mal ohne mir das jetzt näher angesehen zu haben. Damit sollte es gehen.![]()