OfficeServer/README.md
2025-10-01 19:55:38 +02:00

188 lines
3.9 KiB
Markdown

# 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' });
}
});
```