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