225 lines
6.2 KiB
Markdown
225 lines
6.2 KiB
Markdown
# PDF Unterschrift System
|
||
|
||
Ein Zwei-Seiten-System für digitale PDF-Unterschriften mit Echtzeit-Synchronisation.
|
||
|
||
## 🎯 Funktionen
|
||
|
||
- **Master-Seite (PC)**: PDF hochladen und unterschriebene PDF herunterladen
|
||
- **Signatur-Seite (Tablet/Smartphone)**: Permanent offen, zeigt automatisch jede neue PDF mit Vorschau
|
||
- **PDF-Vorschau**: Echte PDF-Anzeige auf beiden Seiten mit pdf.js
|
||
- **Verschiebbare Unterschrift**: Unterschrift per Drag & Drop positionieren
|
||
- **Skalierbare Unterschrift**: Größe der Unterschrift anpassen
|
||
- **Automatische Synchronisation**: Keine Session-IDs, keine QR-Codes nötig
|
||
- **Echtzeit-Übertragung**: WebSocket-basierte direkte Kommunikation
|
||
- **Mehrfachnutzung**: Signatur-Seite einmal öffnen, beliebig viele PDFs unterschreiben
|
||
|
||
## 📋 Voraussetzungen
|
||
|
||
- Node.js (Version 14 oder höher)
|
||
- Ein moderner Webbrowser (Chrome, Firefox, Safari, Edge)
|
||
|
||
## 🚀 Installation & Start
|
||
|
||
### 1. Dependencies installieren
|
||
|
||
```bash
|
||
npm install
|
||
```
|
||
|
||
### 2. Server starten
|
||
|
||
```bash
|
||
npm start
|
||
```
|
||
|
||
oder
|
||
|
||
```bash
|
||
node server.js
|
||
```
|
||
|
||
Der Server läuft nun auf `http://localhost:8080`
|
||
|
||
## 💻 Verwendung
|
||
|
||
### Schritt 1: Signatur-Seite öffnen und offen lassen (Tablet/Smartphone)
|
||
|
||
1. Öffne im Browser: `http://localhost:8080/signature.html`
|
||
2. **WICHTIG**: Lasse diese Seite permanent geöffnet!
|
||
3. Die Seite zeigt "Warte auf PDF..." - das ist normal
|
||
|
||
### Schritt 2: Master-Seite öffnen (PC)
|
||
|
||
1. Öffne im Browser: `http://localhost:8080/master.html`
|
||
2. Klicke auf "PDF auswählen" und wähle eine PDF-Datei aus
|
||
|
||
### Schritt 3: Automatische Anzeige
|
||
|
||
1. Die PDF wird **automatisch** auf der Signatur-Seite angezeigt
|
||
2. Du siehst eine **echte Vorschau** des PDFs
|
||
3. Keine QR-Codes, keine Links - alles passiert automatisch!
|
||
|
||
### Schritt 4: Unterschreiben
|
||
|
||
1. Auf der Signatur-Seite: Zeichne deine Unterschrift
|
||
2. Klicke auf "Unterschrift senden"
|
||
3. Die Unterschrift erscheint automatisch auf der Master-Seite
|
||
|
||
### Schritt 5: Unterschrift positionieren
|
||
|
||
1. Auf der Master-Seite: Die Unterschrift erscheint als **verschiebbare Box** über dem PDF
|
||
2. **Ziehe** die Unterschrift an die gewünschte Position
|
||
3. **Skaliere** die Unterschrift mit dem Griff rechts unten
|
||
4. **Optional**: Entferne die Unterschrift mit dem × falls nötig (zum Neuzeichnen)
|
||
5. **Klicke auf "Unterschrift platzieren & PDF erstellen"**
|
||
6. Die Unterschrift wird ins PDF eingefügt und die finale Version wird angezeigt
|
||
|
||
### Schritt 6: PDF herunterladen
|
||
|
||
- Auf der Master-Seite: Klicke "Unterschriebene PDF herunterladen"
|
||
- Die PDF wird mit der Unterschrift an der gewählten Position gespeichert
|
||
|
||
### Für die nächste PDF:
|
||
|
||
- Lade einfach eine neue PDF auf der Master-Seite hoch
|
||
- Sie wird automatisch auf der (noch offenen) Signatur-Seite angezeigt
|
||
- Unterschreiben → Positionieren → Platzieren → Download
|
||
- **Keine neue Session nötig!**
|
||
|
||
## 🌐 Netzwerk-Zugriff
|
||
|
||
### Für lokale Nutzung:
|
||
- Alle Geräte müssen im selben Netzwerk sein
|
||
- Verwende die IP-Adresse deines PCs statt `localhost`
|
||
|
||
### IP-Adresse finden:
|
||
|
||
**Windows:**
|
||
```bash
|
||
ipconfig
|
||
```
|
||
(Suche nach "IPv4-Adresse")
|
||
|
||
**Mac/Linux:**
|
||
```bash
|
||
ifconfig
|
||
```
|
||
oder
|
||
```bash
|
||
ip addr show
|
||
```
|
||
|
||
Dann verwende: `http://[DEINE-IP]:8080/master.html`
|
||
|
||
## 📁 Dateien
|
||
|
||
```
|
||
pdf-signature-system/
|
||
├── master.html # Master-Seite (PDF hochladen)
|
||
├── signature.html # Signatur-Seite (unterschreiben)
|
||
├── server.js # WebSocket Server
|
||
├── package.json # Node.js Dependencies
|
||
└── README.md # Diese Datei
|
||
```
|
||
|
||
## 🔧 Technische Details
|
||
|
||
### Verwendete Technologien:
|
||
- **Frontend**: HTML5, CSS3, JavaScript
|
||
- **PDF-Vorschau**: PDF.js (Mozilla)
|
||
- **PDF-Verarbeitung**: PDF-Lib (Client-seitig)
|
||
- **Kommunikation**: WebSockets
|
||
- **Server**: Node.js mit `ws` Package
|
||
- **Interaktivität**: Drag & Drop, Resize Handles
|
||
|
||
### Architektur:
|
||
1. Signatur-Seite öffnen und permanent offen lassen
|
||
2. Master-Seite lädt PDF hoch
|
||
3. WebSocket-Server leitet PDF direkt an Signatur-Seite weiter
|
||
4. Unterschrift wird über WebSocket zurück an Master gesendet
|
||
5. Master-Seite fügt Unterschrift ins PDF ein
|
||
6. Für nächste PDF: Einfach neue PDF hochladen - alles andere bleibt wie es ist!
|
||
|
||
## 🛠️ Anpassungen
|
||
|
||
### Standard-Position der Unterschrift ändern:
|
||
|
||
In `master.html`, Zeile ~20:
|
||
```javascript
|
||
let signaturePos = { x: 0.7, y: 0.1 }; // x: 0-1 (links-rechts), y: 0-1 (oben-unten)
|
||
```
|
||
|
||
### Standard-Größe der Unterschrift ändern:
|
||
|
||
Zeile ~21:
|
||
```javascript
|
||
let signatureScale = 0.3; // 0.3 = 30% der PDF-Breite
|
||
```
|
||
|
||
### Port ändern:
|
||
|
||
In `server.js`, Zeile ~158:
|
||
```javascript
|
||
const PORT = 8080; // Ändere auf gewünschten Port
|
||
```
|
||
|
||
Dann auch in beiden HTML-Dateien die WebSocket-URL anpassen.
|
||
|
||
## ❗ Troubleshooting
|
||
|
||
### "WebSocket Verbindung fehlgeschlagen"
|
||
- Stelle sicher, dass der Server läuft
|
||
- Prüfe ob Port 8080 verfügbar ist
|
||
- Bei Firewall: Erlaube Port 8080
|
||
|
||
### "Warte auf PDF..." bleibt stehen
|
||
- Stelle sicher, dass beide Seiten mit dem Server verbunden sind
|
||
- Prüfe Browser-Konsole auf Fehlermeldungen
|
||
- Server neustarten und beide Seiten neu laden
|
||
|
||
### PDF-Vorschau wird nicht angezeigt
|
||
- Stelle sicher, dass pdf.js korrekt geladen wurde (siehe Browser-Konsole)
|
||
- Versuche eine andere PDF-Datei
|
||
- Browser-Cache leeren und Seite neu laden
|
||
|
||
### Unterschrift lässt sich nicht verschieben
|
||
- Stelle sicher, dass die Unterschrift vollständig geladen ist
|
||
- Klicke direkt auf die Unterschrift (nicht auf die Griffe)
|
||
- Browser neu laden
|
||
|
||
### Unterschrift wird nicht angezeigt
|
||
- Prüfe Browser-Konsole auf Fehlermeldungen
|
||
- Stelle sicher, dass beide Seiten verbunden sind
|
||
- Server neustarten
|
||
|
||
### PDF-Download funktioniert nicht
|
||
- Warte bis Status "Unterschrift erhalten" angezeigt wird
|
||
- Prüfe ob PDF-Lib korrekt geladen wurde
|
||
- Browser-Cache leeren
|
||
|
||
## 🔒 Sicherheitshinweise
|
||
|
||
⚠️ **Wichtig**: Dieses System ist für den lokalen Gebrauch gedacht!
|
||
|
||
Für den Produktiveinsatz beachten:
|
||
- HTTPS verwenden (WSS statt WS)
|
||
- Authentifizierung implementieren
|
||
- Session-Timeouts einrichten
|
||
- Input-Validierung verstärken
|
||
- Rate-Limiting hinzufügen
|
||
|
||
## 📝 Lizenz
|
||
|
||
MIT License - Frei verwendbar für private und kommerzielle Zwecke
|
||
|
||
## 🤝 Support
|
||
|
||
Bei Fragen oder Problemen:
|
||
1. Prüfe die Konsole (F12 in Browser)
|
||
2. Stelle sicher, dass Node.js installiert ist
|
||
3. Verifiziere Netzwerk-Verbindung zwischen Geräten
|
||
|
||
---
|
||
|
||
Viel Erfolg mit dem PDF Unterschrift System! ✍️📄
|