# DOCX Template Server mit WebDAV Ein Node.js Webserver zum Befüllen von DOCX-Templates mit Daten aus Web-Requests, erweitert um WebDAV-Funktionalität für direktes Bearbeiten der Dokumente. ## Features - 📄 DOCX-Templates mit Daten befüllen - 🌐 Daten über Web-Requests empfangen - 📊 Unterstützung für Tabellen und Listen - 🔄 Integration mit externen APIs - 💾 Download generierter Dokumente - 🎯 Einfache Web-Oberfläche - **🗂️ WebDAV-Server für direktes Bearbeiten der Dateien** - **📝 Office-Integration (Word, LibreOffice)** - **🔐 Benutzerauthentifizierung** ## Installation ```bash npm install ``` ## Start ```bash # Entwicklung mit Auto-Reload npm run dev # Production npm start ``` Der Server läuft standardmäßig auf `http://localhost:3000` **WebDAV Server läuft auf `http://localhost:8080`** ## WebDAV-Zugriff ### Server URLs - **Templates:** http://localhost:8080/templates/ - **Output:** http://localhost:8080/output/ ### Anmeldedaten - **Admin:** admin / password123 - **User:** user / docx2024 ### Verbindung aufbauen - **Windows:** Als Netzlaufwerk verbinden: `http://localhost:8080/output` - **macOS:** Finder → Mit Server verbinden: `http://localhost:8080/output` - **Linux:** Dateimanager → `dav://localhost:8080/output` Siehe `WEBDAV-ANLEITUNG.md` für detaillierte Anleitungen. ## API Endpoints ### 📄 Dokument erstellen ``` POST /generate-document Content-Type: application/json { "templateName": "template.docx", "data": { "name": "Max Mustermann", "email": "max@beispiel.de", "items": [ {"product": "Produkt A", "quantity": 2, "price": 29.99} ] } } ``` ### 🌐 Mit externen Daten ``` POST /generate-from-external/:id Content-Type: application/json { "templateName": "template.docx" } ``` ### 📋 Templates auflisten ``` GET /templates ``` ### 📥 Dokument herunterladen ``` - `GET /download/:filename` - Dokumente herunterladen - **`GET /webdav-info` - WebDAV-Konfigurationsinformationen** - **`GET /files/output` - Liste aller Output-Dateien mit WebDAV-URLs** - **`DELETE /files/output/:filename` - Datei löschen** ``` ### 🔍 Status prüfen ``` GET /health ``` ## Template-Syntax Verwenden Sie diese Platzhalter in Ihren DOCX-Templates: ### Einfache Werte ``` {{name}} → Max Mustermann {{email}} → max@beispiel.de {{date}} → 30.09.2025 ``` ### Tabellen Erstellen Sie eine Tabelle in Word und verwenden Sie: ``` {{#items}} {{product}} | {{quantity}} | {{price}} {{/items}} ``` ### Bedingungen ``` {{#name}} Dieser Text wird nur angezeigt wenn 'name' existiert {{/name}} ``` ## Ordnerstruktur ``` /home/nodejs/ ├── server.js # Hauptserver ├── package.json # Dependencies ├── public/ │ └── index.html # Web-Interface ├── templates/ # DOCX-Templates hier ablegen └── output/ # Generierte Dokumente ``` ## Templates hinzufügen 1. Erstellen Sie ein DOCX-Template in Word 2. Fügen Sie Platzhalter wie `{{name}}` ein 3. Speichern Sie die Datei im `templates/` Ordner ## Beispiel-Template Erstellen Sie eine Word-Datei mit folgendem Inhalt: ``` Rechnung Name: {{name}} E-Mail: {{email}} Datum: {{date}} Artikel: {{#items}} - {{product}} ({{quantity}}x) - {{price}}€ {{/items}} Gesamt: {{total}}€ ``` ## Verwendung 1. Server starten: `npm run dev` 2. Browser öffnen: `http://localhost:3000` 3. Template im `templates/` Ordner ablegen 4. Über die Web-Oberfläche Dokumente generieren ## Externe APIs integrieren Bearbeiten Sie die `server.js` und ersetzen Sie die Beispiel-Daten in der `/external-data/:id` Route: ```javascript app.get('/external-data/:id', async (req, res) => { try { const id = req.params.id; // Hier Ihren API-Call einfügen const response = await fetch(`https://ihre-api.com/data/${id}`); const data = await response.json(); res.json(data); } catch (error) { res.status(500).json({ error: 'API-Fehler' }); } }); ```