Dies ist eine alte Version des Dokuments!
PDF-Automatisierung mit Bash & Cron – Raspberry Pi & DokuWiki
In diesem Mini-Kurs richtest du eine automatische PDF-Erzeugung für dein DokuWiki ein – ganz ohne manuelles Klicken. Das PDF wird täglich erstellt und auf deiner 32GB-SD-Karte gespeichert.
Schritt 1: Bash-Skript erstellen
Lege ein neues Skript an, das dein gesamtes Kursmaterial als PDF exportiert:
sudo nano /home/pi/pdf_export.sh
Inhalt:
#!/bin/bash # PDF-Export-Skript für DokuWiki mit dw2pdf # Zielpfad für gespeicherte PDF-Datei DATUM=$(date +%F) ZIEL="/home/pi/pdf_exports/kursmaterial_${DATUM}.pdf" # URL zum PDF-Export deiner Startseite PDF_URL="http://localhost/doku.php?do=export_pdfbook&id=start" # PDF generieren und lokal speichern wget -O "$ZIEL" "$PDF_URL"
Dann ausführbar machen:
chmod +x /home/pi/pdf_export.sh
Schritt 2: Rechte korrekt setzen (HTML-Verzeichnis & PDF-Zielordner)
Damit der Webserver (www-data) und dein Pi-Nutzer (pi) beide auf das Webverzeichnis und den PDF-Ordner zugreifen können, richten wir gemeinsame Rechte ein. So sparst du dir künftig manuelles Rechte-Setzen im Terminal, und kannst direkt in FileZilla Ordner/Dateien anlegen und löschen.
Füge pi zur Gruppe www-data hinzu
sudo usermod -aG www-data pi
Setze Besitzer und Gruppe für das Webverzeichnis
sudo chown -R www-data:www-data /var/www/html
Vergib passende Rechte für alle Ordner
sudo find /var/www/html -type d -exec chmod 2775 {} \;
Und für alle Dateien
sudo find /var/www/html -type f -exec chmod 664 {} \;
Setze das setgid-Bit
sudo chmod g+s /var/www/html
Ergebnis: Du kannst als <code>pi</code> direkt PDF-Dateien schreiben, Skripte anlegen oder Wiki-Dateien ändern – ohne <code>sudo</code>.
Jetzt einmal neu einloggen oder den Raspberry Pi neu starten, damit die Gruppenrechte aktiv sind.
Schritt 3: Zielverzeichnis für PDF-Dateien anlegen
mkdir -p /home/pi/pdf_exports
Schritt 4: Eigene PDF-Vorlage für dw2pdf einrichten
Wir erstellen eine individuelle PDF-Vorlage mit Logo, Deckblatt, Kopf- und Fußzeile.
Verzeichnis anlegen
sudo mkdir -p /var/www/html/lib/plugins/dw2pdf/tpl/odp
Deckblatt (cover.html)
Pfad:
/var/www/html/lib/plugins/dw2pdf/tpl/odp/cover.html
<html> <head> <style> body { background-color: #e6f0fb; display: flex; flex-direction: column; justify-content: center; align-items: center; height: 100vh; font-family: sans-serif; } .logo { max-width: 400px; margin-bottom: 30px; } .title { font-size: 36pt; font-weight: bold; text-align: center; } </style> </head> <body> <img class="logo" src="@WIKIURL@lib/exe/fetch.php?media=odp-logo.png" alt="Logo" /> <div class="title">PDF-Kursmaterial</div> </body> </html>
Kopfzeile (header_even.html & header_odd.html)
Pfad:
/var/www/html/lib/plugins/dw2pdf/tpl/odp/header_even.html
/var/www/html/lib/plugins/dw2pdf/tpl/odp/header_odd.html
<div style="width: 100%; display: flex; justify-content: space-between; align-items: center; font-size: 10pt;"> <img src="@WIKIURL@lib/exe/fetch.php?media=odp-logo.png" style="height: 20px;" /> <div style="text-align: right;"> [[@PAGE@]] </div> </div>
Fußzeile (footer_even.html & footer_odd.html)
Pfad:
/var/www/html/lib/plugins/dw2pdf/tpl/odp/footer_even.html
/var/www/html/lib/plugins/dw2pdf/tpl/odp/footer_odd.html
<div style="width: 100%; font-size: 8pt; text-align: center; color: #666;"> © Copyright Olaf Droste Products, Immermannstr. 31, 44147 Dortmund </div>
Vorlage aktivieren in DokuWiki
→ Admin → PDF Export (dw2pdf) → Wähle: odp → Speichern
Schritt 5: Automatisierung mit Cron einrichten
Starte den Cronjob-Editor:
crontab -e
Füge am Ende diese Zeile ein:
0 0 * * * /home/pi/pdf_export.sh
Jetzt wird jeden Tag um Mitternacht automatisch dein PDF neu erstellt und in <code>/home/pi/pdf_exports/</code> abgelegt.
Schritt 6: PHP mbstring-Erweiterung installieren (Pflicht für PDF)
Wenn du beim PDF-Export folgende Fehlermeldung siehst: <code> mbstring extension must be loaded in order to run mPDF </code> … dann fehlt eine wichtige PHP-Erweiterung, die für den PDF-Export benötigt wird.
Installiere die Erweiterung einfach per Terminal:
sudo apt install php-mbstring -y sudo systemctl restart apache2
Danach funktioniert der PDF-Export mit <code>dw2pdf</code> fehlerfrei.
Testen
Führe das Skript einmal manuell aus:
/home/pi/pdf_export.sh
→ Prüfe, ob die PDF-Datei im Zielordner liegt → Öffne sie – die Vorlage und das Layout sollten stimmen
Tipp: Du kannst das PDF später automatisch per FTP oder Webinterface bereitstellen – z. B. mit PHP oder Nextcloud.