new file: README_INSTALL.md new file: requirements.txt new file: static/css/style.css new file: static/js/images-to-pdf.js new file: static/js/main.js new file: static/js/pdf-tools.js new file: templates/pdf_tools.html
243 lines
6.8 KiB
Markdown
243 lines
6.8 KiB
Markdown
# PDF Editor Web App
|
|
|
|
Eine vollständige PDF-Bearbeitungs-Web-Anwendung, die als lokaler Flask-Server läuft. Bietet Funktionen zum Konvertieren von Bildern zu PDF, Zusammenführen von PDFs, Konvertieren von PDFs zu Bildern und vieles mehr.
|
|
|
|
## ✨ Features
|
|
|
|
### 🖼️ Bilder zu PDF
|
|
- **Mehrere Bilder auswählen**: Unterstützt JPG, PNG, GIF, BMP, TIFF
|
|
- **Drag & Drop Interface**: Einfaches Hochladen durch Ziehen und Ablegen
|
|
- **Sortierbare Reihenfolge**: Bilder durch Ziehen neu anordnen
|
|
- **Automatische Größenanpassung**: Bilder werden optimal auf PDF-Seiten angepasst
|
|
- **Progress Tracking**: Echtzeit-Upload-Fortschritt
|
|
|
|
### 🔧 PDF Tools
|
|
- **PDFs zusammenführen**: Mehrere PDFs zu einer Datei kombinieren
|
|
- **PDF zu Bildern**: Jede PDF-Seite als PNG/JPEG exportieren
|
|
- **Sortierbare PDF-Liste**: Reihenfolge beim Zusammenführen anpassen
|
|
- **ZIP-Export**: Alle extrahierten Bilder in einer ZIP-Datei
|
|
|
|
### 🛡️ Sicherheit & Datenschutz
|
|
- **100% Lokal**: Alle Verarbeitung erfolgt auf Ihrem Computer
|
|
- **Keine Cloud-Uploads**: Dateien verlassen nie Ihr System
|
|
- **Automatische Bereinigung**: Temporäre Dateien werden nach 1 Stunde gelöscht
|
|
- **Sichere Dateinamen**: Automatische Bereinigung und Eindeutigkeit
|
|
|
|
### 📱 Benutzerfreundlichkeit
|
|
- **Responsive Design**: Funktioniert auf Desktop, Tablet und Smartphone
|
|
- **Moderne UI**: Bootstrap 5 mit Custom CSS
|
|
- **Intuitive Bedienung**: Selbsterklärende Benutzeroberfläche
|
|
- **Echtzeit-Feedback**: Progress Bars und Notifications
|
|
|
|
## 🚀 Installation
|
|
|
|
### Voraussetzungen
|
|
- Python 3.8 oder höher
|
|
- pip (Python Package Manager)
|
|
|
|
### Schritt-für-Schritt Installation
|
|
|
|
1. **Repository klonen oder herunterladen**
|
|
```bash
|
|
# Falls Sie Git verwenden
|
|
git clone <repository-url>
|
|
cd pdf-web-app
|
|
```
|
|
|
|
2. **Virtuelle Umgebung erstellen (empfohlen)**
|
|
```bash
|
|
python -m venv venv
|
|
|
|
# Windows
|
|
venv\Scripts\activate
|
|
|
|
# macOS/Linux
|
|
source venv/bin/activate
|
|
```
|
|
|
|
3. **Abhängigkeiten installieren**
|
|
```bash
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
4. **Poppler installieren (für pdf2image)**
|
|
|
|
**Windows:**
|
|
- Laden Sie Poppler von [hier](https://github.com/oschwartz10612/poppler-windows/releases) herunter
|
|
- Extrahieren Sie es nach `C:\poppler`
|
|
- Fügen Sie `C:\poppler\Library\bin` zu Ihren Umgebungsvariablen hinzu
|
|
|
|
**macOS:**
|
|
```bash
|
|
brew install poppler
|
|
```
|
|
|
|
**Ubuntu/Debian:**
|
|
```bash
|
|
sudo apt-get update
|
|
sudo apt-get install poppler-utils
|
|
```
|
|
|
|
5. **Anwendung starten**
|
|
```bash
|
|
python app.py
|
|
```
|
|
|
|
6. **Browser öffnen**
|
|
- Öffnen Sie Ihren Browser und gehen Sie zu: `http://127.0.0.1:5000`
|
|
|
|
## 📁 Projektstruktur
|
|
|
|
```
|
|
pdf-web-app/
|
|
├── app.py # Haupt-Flask-Anwendung
|
|
├── requirements.txt # Python-Abhängigkeiten
|
|
├── README.md # Diese Datei
|
|
├── templates/ # HTML-Templates
|
|
│ ├── base.html # Basis-Template
|
|
│ ├── index.html # Startseite
|
|
│ ├── images_to_pdf.html # Bilder zu PDF Seite
|
|
│ └── pdf_tools.html # PDF Tools Seite
|
|
├── static/ # Statische Dateien
|
|
│ ├── css/
|
|
│ │ └── style.css # Custom CSS
|
|
│ └── js/
|
|
│ ├── main.js # Haupt-JavaScript
|
|
│ ├── images-to-pdf.js # Bilder zu PDF Funktionalität
|
|
│ └── pdf-tools.js # PDF Tools Funktionalität
|
|
├── uploads/ # Temporäre Upload-Dateien
|
|
└── output/ # Generierte Ausgabedateien
|
|
```
|
|
|
|
## 🔧 Konfiguration
|
|
|
|
### Anpassbare Einstellungen in `app.py`:
|
|
|
|
```python
|
|
# Maximale Dateigröße (Standard: 16MB)
|
|
MAX_FILE_SIZE = 16 * 1024 * 1024
|
|
|
|
# Unterstützte Bildformate
|
|
ALLOWED_IMAGE_EXTENSIONS = {'png', 'jpg', 'jpeg', 'gif', 'bmp', 'tiff'}
|
|
|
|
# Server-Konfiguration
|
|
app.run(debug=True, host='127.0.0.1', port=5000)
|
|
```
|
|
|
|
## 📖 Verwendung
|
|
|
|
### Bilder zu PDF konvertieren
|
|
|
|
1. Gehen Sie zur "Bilder zu PDF" Seite
|
|
2. Ziehen Sie Bilder in den Upload-Bereich oder klicken Sie zum Auswählen
|
|
3. Sortieren Sie die Bilder durch Ziehen in die gewünschte Reihenfolge
|
|
4. Klicken Sie auf "Zu PDF konvertieren"
|
|
5. Laden Sie die fertige PDF-Datei herunter
|
|
|
|
### PDFs zusammenführen
|
|
|
|
1. Gehen Sie zur "PDF Tools" Seite
|
|
2. Wählen Sie den "PDFs zusammenführen" Tab
|
|
3. Laden Sie mindestens 2 PDF-Dateien hoch
|
|
4. Sortieren Sie die Reihenfolge durch Ziehen
|
|
5. Klicken Sie auf "PDFs zusammenführen"
|
|
6. Laden Sie die zusammengeführte PDF herunter
|
|
|
|
### PDF zu Bildern konvertieren
|
|
|
|
1. Gehen Sie zur "PDF Tools" Seite
|
|
2. Wählen Sie den "PDF zu Bildern" Tab
|
|
3. Laden Sie eine PDF-Datei hoch
|
|
4. Wählen Sie die gewünschten Export-Einstellungen
|
|
5. Klicken Sie auf "Zu Bildern konvertieren"
|
|
6. Laden Sie die ZIP-Datei mit allen Bildern herunter
|
|
|
|
## 🛠️ Entwicklung
|
|
|
|
### Lokale Entwicklung
|
|
|
|
```bash
|
|
# Debug-Modus aktivieren
|
|
export FLASK_DEBUG=1 # Linux/macOS
|
|
set FLASK_DEBUG=1 # Windows
|
|
|
|
# Anwendung starten
|
|
python app.py
|
|
```
|
|
|
|
### Neue Features hinzufügen
|
|
|
|
1. Backend-Logik in `app.py` hinzufügen
|
|
2. API-Endpunkte erstellen
|
|
3. Frontend-Funktionalität in entsprechende JS-Datei einfügen
|
|
4. Templates bei Bedarf erweitern
|
|
|
|
## 🐛 Fehlerbehebung
|
|
|
|
### Häufige Probleme
|
|
|
|
**Problem**: `ImportError: No module named 'pdf2image'`
|
|
**Lösung**: Stellen Sie sicher, dass Poppler installiert ist (siehe Installation)
|
|
|
|
**Problem**: `Permission denied` beim Dateizugriff
|
|
**Lösung**: Stellen Sie sicher, dass die Upload- und Output-Ordner beschreibbar sind
|
|
|
|
**Problem**: Große Dateien werden nicht hochgeladen
|
|
**Lösung**: Erhöhen Sie `MAX_CONTENT_LENGTH` in der Flask-Konfiguration
|
|
|
|
**Problem**: PDF-Konvertierung schlägt fehl
|
|
**Lösung**: Überprüfen Sie, ob alle Abhängigkeiten korrekt installiert sind
|
|
|
|
### Debug-Informationen aktivieren
|
|
|
|
```python
|
|
# In app.py
|
|
import logging
|
|
logging.basicConfig(level=logging.DEBUG)
|
|
```
|
|
|
|
## 📝 Lizenz
|
|
|
|
Dieses Projekt steht unter der MIT-Lizenz. Sie können es frei verwenden, modifizieren und verteilen.
|
|
|
|
## 🤝 Beitragen
|
|
|
|
Beiträge sind willkommen! Bitte:
|
|
|
|
1. Forken Sie das Repository
|
|
2. Erstellen Sie einen Feature-Branch
|
|
3. Committen Sie Ihre Änderungen
|
|
4. Pushen Sie zum Branch
|
|
5. Erstellen Sie einen Pull Request
|
|
|
|
## 📞 Support
|
|
|
|
Bei Fragen oder Problemen:
|
|
|
|
1. Überprüfen Sie die Fehlerbehebung oben
|
|
2. Erstellen Sie ein Issue im Repository
|
|
3. Überprüfen Sie die Console-Logs im Browser (F12)
|
|
|
|
## 🔮 Geplante Features
|
|
|
|
- [ ] PDF-Passwort-Schutz
|
|
- [ ] PDF-Metadaten bearbeiten
|
|
- [ ] Wasserzeichen hinzufügen
|
|
- [ ] OCR-Texterkennung
|
|
- [ ] PDF-Komprimierung
|
|
- [ ] Batch-Verarbeitung
|
|
- [ ] Dark Mode
|
|
- [ ] Mehrsprachige Unterstützung
|
|
|
|
## 📊 Technologie-Stack
|
|
|
|
- **Backend**: Python Flask
|
|
- **Frontend**: HTML5, CSS3, JavaScript (ES6+)
|
|
- **UI Framework**: Bootstrap 5
|
|
- **PDF Processing**: PyPDF2, reportlab, pdf2image
|
|
- **Image Processing**: Pillow (PIL)
|
|
- **Icons**: Font Awesome
|
|
|
|
---
|
|
|
|
**Erstellt mit ❤️ für lokale PDF-Bearbeitung** |