Files
2024-12-17 10:22:19 +01:00

126 lines
4.2 KiB
Bash

#!/bin/bash
# Hinweise zur verwendung des Skripts:
# - Vor dem ersten laufen lassen des Skripts sollte sichergestellt werden dass der Hauptordner Richtig gewählt ist, und dass dort nur die Datein Abgelegt werden welche umgewandelt werden sollen.
# - Das Skript sollte dann automatosch inerhalb des Haupt Ordners einen Unterordner als Zielordner erstellen um dort die PDFs Abzulegen.
# - Bei Ausführen des Skripts wird der Zielordner immer vor beginn der Umwandlungen gereinigt, sodass keine Dateikonflikte enstehen.
# - Die Originaldatein werden nachdem diese in PDFs umgewandelt wurden GELÖSCHT, es sollten also keine einzeloriginale umgewandelt werden sondern nur Kopien
# - Es können weitere Dateitypen zur umwandlung in der jeweiligen find funktion wie bereits vorhandne hinzugefügt werden.
# Pfad zum Hauptordner (Dokumente)
HAUPT_ORDNER="$HOME/Dokumente"
# Pfad zum Zielordner (PDF)
ZIEL_ORDNER="$HAUPT_ORDNER/PDF"
# Einlesen eines Alternativen Loglevels optionen sind debug und error
LOGLEVL=$1
# Festlegen der Farben für Ausgabe
GREEN='\033[0;32m' # Farbe für LOG
RED='\033[0;31m' # Frabe für ERROR
CYAN='\033[0;36m' # Farbe für DEBUG
NC='\033[0m' # Keine Farbe
# Funktion zur ausgabe von Debug Meldungen
function debug(){
if [ "$LOGLEVEL" = "debug" ]; then
echo -e "${CYAN}[DEBUG] $1${NC}"
fi
}
# Funktion zur Ausgabe von log Meldungen
function log() {
if [ "$LOGLEVEL" != "error" ]; then
echo -e "${GREEN}[INFO] $1${NC}"
fi
}
# Funktion zur Ausgabe von error Meldungen
function error() {
echo -e "${RED}[ERROR] $1${NC}"
}
# Zielordner erstellen, falls er nicht existiert
rm -frd "$ZIEL_ORDNER"
mkdir -p "$ZIEL_ORDNER"
mkdir -p "$ZIEL_ORDNER/Anhang"
# Alle .doc-Dateien im Hauptordner und Unterordner finden
find "$HAUPT_ORDNER" -type f \( -name "*.DOC" -o -name "*.doc" -o -name "*.docx" -o -name "*.DOCX" \) | while read -r DOC_FILE; do
# Relativen Pfad zur Datei finden
RELATIVER_PFAD="${DOC_FILE#$HAUPT_ORDNER/}"
# Zielverzeichnis für die PDF-Datei bestimmen
ZIEL_VERZEICHNIS="$ZIEL_ORDNER/$(dirname "$RELATIVER_PFAD")"
# Zielverzeichnis erstellen, falls es nicht existiert
mkdir -p "$ZIEL_VERZEICHNIS"
debug "Konvertiere $DOC_FILE..."
# Datei in das Zielverzeichnis als PDF konvertieren
if lowriter --headless --convert-to pdf --outdir "$ZIEL_VERZEICHNIS" "$DOC_FILE"; then
debug "Loesche Originaldatei $DOC_FILE..."
rm "$DOC_FILE"
else
error "Fehler: Konvertierung fehlgeschlagen fuer $DOC_FILE."
fi
done
log "================>DOC umwandlung Abgeslossen<==================="
# Alle .ppt-Datein im Hauptordner und Unterordnern finden
find "$HAUPT_ORDNER" -type f \( -name "*.ppt" -o -name "*.pptm" -o -name "*.pptx" -o -name "*.PPT" -o -name "*.PPTX" \) | while read -r PRES_FILE; do
# Relativen Pfad zur Datei finden
RELATIVER_PFAD="${PRES_FILE#$HAUPT_ORDNER/}"
# Zielverzeichnis für die PDF-Datei bestimmen
ZIEL_VERZEICHNIS="$ZIEL_ORDNER/Anhang/$(dirname "$RELATIVER_PFAD")"
# Ausgabe
debug "Konvertiere $PRES_FILE..."
# Datei in das Zielverzeichnis als PDF konvertieren
if libreoffice --headless --convert-to pdf --outdir "$ZIEL_VERZEICHNIS/Anhang" "$PRES_FILE"; then
debug "Loesche Originaldatei $PRES_FILE..."
rm "$PRES_FILE"
else
error "Fehler: Konvertierung fehlgeschlagen fuer $PRES_FILE."
fi
done
log "================>PPT umwandlung Abgeslossen<==================="
find "$HAUPT_ORDNER" -type f \( -name "*.XLS" -o -name "*.xls" -o -name "*.XLSX" -o -name "*.xlsx" \) | while read -r TAB_FILE; do
# Relativen Pfad zur Datei finden
RELATIVER_PFAD="${TAB_FILE#$HAUPT_ORDNER/}"
# Zielverzeichnis fr die PDF-Datei bestimmen
ZIEL_VERZEICHNIS="$ZIEL_ORDNER/Anhang/$(dirname "$RELATIVER_PFAD")"
debug "Konvertiere $TAB_FILE..."
# Datei in das Zielverzeichnis als PDF konvertieren
if libreoffice --headless --convert-to pdf --outdir "$ZIEL_VERZEICHNIS/Anhang" "$TAB_FILE"; then
debug "Loesche Originaldatei $TAB_FILE..."
rm "$TAB_FILE"
else
error "Fehler: Konvertierung fehlgeschlagen für $TAB_FILE."
fi
done
log "============================"
log "Konvertierung Abgeschlossen."
log "============================"