✅ Frontend-Verbesserungen: - WebDAV-Integration für direktes Template-Bearbeiten - 'In Word öffnen' Button für ms-word: URLs - Verbesserte Template-Karten mit Tag-Informationen - WebDAV-Info-Sektion mit Anleitungen - Korrigierte API-Endpunkte für docxtemplater 🔧 Template-Updates: - Alle Templates auf docxtemplater-Syntax aktualisiert - create-*-fixed.js Scripts für korrekte {tag} Syntax - Entfernt alte ++tag++ und ++INS++ Syntax - Neue create-new-table-template.js für echte Loops 🌐 WebDAV-Features: - Direkter Template-Download über /webdav/templates/ - Template-Bearbeitung in Word möglich - Automatische Speicherung über WebDAV - Fallback auf Download bei Word-Problemen 📊 Template-Syntax-Migration: - {variable} statt ++variable++ - {#array}{field}{/array} statt ++INS array++ - Echte dynamische Tabellen ohne fixe Indizes - Verbesserte Tag-Erkennung und Analyse
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
npm install
Start
# 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
- Erstellen Sie ein DOCX-Template in Word
- Fügen Sie Platzhalter wie
{{name}}ein - 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
- Server starten:
npm run dev - Browser öffnen:
http://localhost:3000 - Template im
templates/Ordner ablegen - Ü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:
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' });
}
});
Description
Languages
JavaScript
74.4%
HTML
20.3%
Shell
5.3%