DOCX Template Server
Ein Node.js-Server für die automatische Verarbeitung von DOCX-Templates.
✨ Features
- 📄 Automatische DOCX-Template-Verarbeitung mit docxtemplater
- 🎯 Intelligente Tag-Erkennung und automatische Demo-Daten-Generierung
- 📊 Tabellen und Listen - Unterstützung für komplexe Datenstrukturen
- 🌐 Dateifreigabe - Lesen und Schreiben von Templates und Dokumenten
- 🔒 SSL-Ready - Vorbereitet für HTTPS mit Let's Encrypt
- 🎨 Web-Interface - Einfache Bedienung über Browser
- 🚀 Ein-Klick-Start - Automatische Installation und Konfiguration
🚀 Schnellstart
# Server starten
./start.sh
# Oder manuell:
npm install
npm start
🌐 Zugriff
🌐 Web-Zugriff:
- Server: http://localhost:80/
- Templates: http://localhost:80/templates/
- Dokumente: http://localhost:80/documents/
📋 Verwendung
1. Template erstellen
Erstellen Sie ein DOCX-Dokument mit Tags wie:
{firma}- wird zu Firmennamen{vorname}{nachname}- werden zu Namen{email}{telefon}- werden zu Kontaktdaten{#items}...{/items}- wird zu Tabellendaten
2. Template hochladen
- Über Web-Interface: Datei auswählen und hochladen
- Über API:
POST /upload-template - Über Web-Upload: http://localhost:80/ → "Template hochladen"
- Direkt in Ordner: Datei in
/templates/kopieren
3. Automatische Verarbeitung
Der Server erkennt automatisch alle Tags und füllt sie mit passenden Demo-Daten:
{
"firma": "Mustermann GmbH",
"vorname": "Max",
"nachname": "Mustermann",
"email": "max@example.com",
"telefon": "+49 123 456789",
"items": [
{"items_name": "Produkt 1", "items_value": "100.00", "items_date": "01.01.2024"},
{"items_name": "Produkt 2", "items_value": "200.00", "items_date": "02.01.2024"}
]
}
🏷️ Unterstützte Tag-Typen
Einfache Tags
| Tag-Pattern | Generierte Daten | Beispiel |
|---|---|---|
{name}, {vorname} |
Vorname | Max |
{nachname}, {surname} |
Nachname | Mustermann |
{email}, {mail} |
max@example.com | |
{telefon}, {phone} |
Telefon | +49 123 456789 |
{adresse}, {address} |
Adresse | Musterstraße 123 |
{stadt}, {city} |
Stadt | Berlin |
{plz}, {postal} |
PLZ | 12345 |
{datum}, {date} |
Datum | 02.10.2025 |
{betrag}, {preis}, {amount} |
Geldbetrag | 1.234,56 |
{firma}, {company} |
Firmenname | Mustermann GmbH |
{nummer}, {id} |
Nummer | 123456 |
Tabellen/Listen Tags
{#items}
• {items_name}: {items_value} EUR (vom {items_date})
{/items}
Wird zu:
• Produkt 1: 100.00 EUR (vom 01.01.2024)
• Produkt 2: 200.00 EUR (vom 02.01.2024)
• Produkt 3: 300.00 EUR (vom 03.01.2024)
🔧 API Endpunkte
Templates verwalten
# Alle Templates auflisten
GET /api/templates
# Template hochladen und verarbeiten
POST /upload-template
Content-Type: multipart/form-data
Body: template=<file>
# Test-Template erstellen
GET /create-test-template
Dokumente verwalten
# Alle Dokumente auflisten
GET /api/documents
# Template mit eigenen Daten verarbeiten
POST /api/process-template/:templateName
Content-Type: application/json
Body: {
"firma": "Meine Firma",
"vorname": "John",
"nachname": "Doe",
"items": [
{"items_name": "Service A", "items_value": "500.00"}
]
}
🌐 HTTP-Zugriff
Direkte HTTP-URLs:
Templates und generierte Dokumente sind über HTTP zugänglich:
- Templates: http://localhost:80/templates/
- Dokumente: http://localhost:80/documents/
🔒 SSL/HTTPS Einrichtung
Automatisches Setup
# SSL-Setup-Assistent starten
./setup-ssl.sh
Manuelle Konfiguration
Option 1: Selbstsigniert (für Tests)
openssl req -x509 -newkey rsa:4096 -keyout private-key.pem -out certificate.pem -days 365 -nodes
Option 2: Let's Encrypt (für Produktion)
# Certbot installieren
sudo apt install certbot
# Zertifikat anfordern
sudo certbot certonly --standalone -d ihre-domain.com
# Zertifikate verlinken
ln -sf /etc/letsencrypt/live/ihre-domain.com/privkey.pem private-key.pem
ln -sf /etc/letsencrypt/live/ihre-domain.com/fullchain.pem certificate.pem
SSL aktivieren
In server.js die SSL-Sektion uncommentieren:
const sslOptions = {
key: fs.readFileSync('private-key.pem'),
cert: fs.readFileSync('certificate.pem')
};
https.createServer(sslOptions, app).listen(443, () => {
console.log('HTTPS Server läuft auf Port 443');
});
📁 Verzeichnisstruktur
/home/OfficeServerJS/
├── server.js # Hauptserver-Datei
├── package.json # Node.js Abhängigkeiten
├── start.sh # Server-Start-Script
├── setup-ssl.sh # SSL-Setup-Assistent
├── create_template.js # Template-Erstellungs-Tool
├── templates/ # DOCX-Templates (Eingabe)
│ ├── test_template.docx
│ └── rechnung_template.docx
├── documents/ # Generierte Dokumente (Ausgabe)
│ ├── test_template_ausgefuellt.docx
│ └── rechnung_template_ausgefuellt.docx
├── uploads/ # Temporäre Upload-Dateien
├── private-key.pem # SSL Privater Schlüssel (falls SSL aktiviert)
└── certificate.pem # SSL Zertifikat (falls SSL aktiviert)
🛠️ Anpassungen
Neue Tag-Typen hinzufügen
In server.js → DemoDataGenerator.generateData():
if (lowerTag.includes('neuer_tag') || lowerTag.includes('new_tag')) {
data[tag] = 'Ihre eigene Daten-Generierung hier';
}
Port ändern
export PORT=3000
./start.sh
Unterschiedliche Demo-Daten-Sets
// In server.js
const demoDataSets = {
'german': { /* deutsche Demo-Daten */ },
'english': { /* englische Demo-Daten */ },
'business': { /* Business Demo-Daten */ }
};
🚦 Produktions-Deployment
1. Server vorbereiten
# System aktualisieren
sudo apt update && sudo apt upgrade -y
# Node.js installieren
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt-get install -y nodejs
# Firewall konfigurieren
sudo ufw allow 80
sudo ufw allow 443
sudo ufw enable
2. SSL einrichten
./setup-ssl.sh
# Option 2 wählen für Let's Encrypt
3. Process Manager (PM2)
npm install -g pm2
# Server mit PM2 starten
pm2 start server.js --name docx-server
# Auto-Start bei Neustart
pm2 startup
pm2 save
4. Nginx Reverse Proxy (optional)
server {
listen 80;
server_name ihre-domain.com;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
🔍 Troubleshooting
Server startet nicht
# Port-Konflikt prüfen
sudo netstat -tlnp | grep :80
# Berechtigungen prüfen
ls -la private-key.pem certificate.pem
Templates werden nicht verarbeitet
- DOCX-Datei korrekt formatiert?
- Tags richtig geschrieben (
{tag}nicht{{tag}})? - Datei-Berechtigungen prüfen
Templates nicht sichtbar
Prüfen Sie:
- Server läuft:
http://localhost:80/ - Templates-Ordner:
http://localhost:80/templates/
SSL-Probleme
# Zertifikat prüfen
openssl x509 -in certificate.pem -text -noout
# Berechtigungen prüfen
chmod 600 private-key.pem
chmod 644 certificate.pem
📞 Support
- Logs:
journalctl -u docx-server -f(bei PM2:pm2 logs) - Status:
pm2 statusoderps aux | grep node - Konfiguration: Alle Einstellungen in
server.js
📄 Lizenz
MIT License - Frei verwendbar für kommerzielle und private Projekte.
Description
Languages
JavaScript
91.9%
Shell
6%
CSS
2.1%