Files
PDF-WEB/templates/pdf_tools.html
SimolZimol 1097fa0c64 modified: QUICKSTART.md
modified:   app.py
	deleted:    output/.gitkeep
	modified:   static/css/style.css
	modified:   static/js/pdf-tools.js
	modified:   templates/pdf_tools.html
	deleted:    uploads/.gitkeep
2025-10-12 23:50:26 +02:00

327 lines
16 KiB
HTML

{% extends "base.html" %}
{% block title %}PDF Tools - PDF Editor{% endblock %}
{% block content %}
<div class="row">
<div class="col-12">
<div class="page-header mb-4">
<h2>
<i class="fas fa-tools me-2"></i>PDF Bearbeitungstools
</h2>
<p class="text-muted">
Erweiterte Werkzeuge für die PDF-Bearbeitung: Zusammenführen, teilen, konvertieren.
</p>
</div>
</div>
</div>
<!-- Tools Navigation -->
<div class="row mb-4">
<div class="col-12">
<div class="card">
<div class="card-body p-2">
<ul class="nav nav-pills justify-content-center" id="tools-nav" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="merge-tab" data-bs-toggle="pill"
data-bs-target="#merge-panel" type="button" role="tab">
<i class="fas fa-compress-arrows-alt me-2"></i>PDFs zusammenführen
</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="split-tab" data-bs-toggle="pill"
data-bs-target="#split-panel" type="button" role="tab">
<i class="fas fa-cut me-2"></i>PDF zu Bildern
</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="extract-tab" data-bs-toggle="pill"
data-bs-target="#extract-panel" type="button" role="tab">
<i class="fas fa-file-export me-2"></i>Seiten extrahieren
</button>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="tab-content" id="tools-content">
<!-- PDF Merge Panel -->
<div class="tab-pane fade show active" id="merge-panel" role="tabpanel" aria-labelledby="merge-tab">
<div class="row">
<div class="col-lg-8">
<div class="card">
<div class="card-header">
<h5 class="mb-0">
<i class="fas fa-compress-arrows-alt me-2"></i>PDFs zusammenführen
</h5>
</div>
<div class="card-body">
<div id="merge-upload-area" class="upload-area border-dashed p-4 text-center mb-3">
<i class="fas fa-file-pdf fa-3x text-muted mb-3"></i>
<h5>PDF-Dateien hier hinziehen oder auswählen</h5>
<p class="text-muted mb-3">Mindestens 2 PDF-Dateien erforderlich</p>
<input type="file" id="merge-file-input" multiple accept=".pdf" class="d-none">
<button type="button" class="btn btn-primary" onclick="document.getElementById('merge-file-input').click()">
<i class="fas fa-folder-open me-2"></i>PDF-Dateien auswählen
</button>
</div>
<div id="merge-file-list" style="display: none;">
<h6>PDF-Dateien zum Zusammenführen:</h6>
<div id="merge-files-container" class="list-group sortable-list mb-3">
<!-- Files will be added here -->
</div>
<button id="merge-pdfs-btn" class="btn btn-success" disabled>
<i class="fas fa-compress-arrows-alt me-2"></i>PDFs zusammenführen
</button>
</div>
<div id="merge-result" style="display: none;" class="mt-3">
<div class="alert alert-success">
<div class="d-flex align-items-center">
<i class="fas fa-check-circle fa-2x me-3"></i>
<div class="flex-grow-1">
<h6 class="mb-1">PDFs erfolgreich zusammengeführt!</h6>
<p class="mb-0">Die PDF-Dateien wurden zu einer Datei zusammengeführt.</p>
</div>
<a id="merge-download-link" href="#" class="btn btn-success">
<i class="fas fa-download me-2"></i>Herunterladen
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-lg-4">
<div class="card">
<div class="card-header">
<h6 class="mb-0">
<i class="fas fa-cog me-2"></i>Einstellungen
</h6>
</div>
<div class="card-body">
<div class="mb-3">
<label class="form-label">Vorschau-Größe:</label>
<select id="pdf-preview-size" class="form-select" onchange="updatePdfPreviewSize()">
<option value="small">Klein (80px)</option>
<option value="medium" selected>Mittel (120px)</option>
<option value="large">Groß (160px)</option>
</select>
</div>
<div class="form-check mb-3">
<input class="form-check-input" type="checkbox" id="show-pdf-info" checked>
<label class="form-check-label">
PDF-Informationen anzeigen
</label>
</div>
</div>
</div>
<div class="card mt-3">
<div class="card-header">
<h6 class="mb-0">
<i class="fas fa-info-circle me-2"></i>Anleitung
</h6>
</div>
<div class="card-body">
<ol class="mb-0">
<li class="mb-2">Wählen Sie mindestens 2 PDF-Dateien aus</li>
<li class="mb-2">Sortieren Sie die Reihenfolge durch Ziehen</li>
<li class="mb-2">Rotieren Sie PDFs bei Bedarf</li>
<li class="mb-2">Klicken Sie auf "PDFs zusammenführen"</li>
<li>Laden Sie die zusammengeführte PDF herunter</li>
</ol>
<div class="mt-3">
<small class="text-muted">
<i class="fas fa-lightbulb me-1"></i>
<strong>Tipp:</strong> Klicken Sie auf eine PDF-Vorschau für eine größere Ansicht der ersten Seite.
</small>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- PDF to Images Panel -->
<div class="tab-pane fade" id="split-panel" role="tabpanel" aria-labelledby="split-tab">
<div class="row">
<div class="col-lg-8">
<div class="card">
<div class="card-header">
<h5 class="mb-0">
<i class="fas fa-cut me-2"></i>PDF zu Bildern konvertieren
</h5>
</div>
<div class="card-body">
<div id="split-upload-area" class="upload-area border-dashed p-4 text-center mb-3">
<i class="fas fa-file-pdf fa-3x text-muted mb-3"></i>
<h5>PDF-Datei hier hinziehen oder auswählen</h5>
<p class="text-muted mb-3">Jede Seite wird als separates Bild exportiert</p>
<input type="file" id="split-file-input" accept=".pdf" class="d-none">
<button type="button" class="btn btn-primary" onclick="document.getElementById('split-file-input').click()">
<i class="fas fa-folder-open me-2"></i>PDF-Datei auswählen
</button>
</div>
<div id="split-file-info" style="display: none;" class="mb-3">
<div class="card bg-light">
<div class="card-body">
<div class="d-flex align-items-center">
<div id="split-preview-container" class="me-3">
<i class="fas fa-file-pdf fa-2x text-danger"></i>
</div>
<div class="flex-grow-1">
<h6 id="split-filename" class="mb-1"></h6>
<small id="split-file-details" class="text-muted"></small>
</div>
<button id="convert-to-images-btn" class="btn btn-warning">
<i class="fas fa-images me-2"></i>Zu Bildern konvertieren
</button>
</div>
</div>
</div>
</div>
<div id="split-result" style="display: none;" class="mt-3">
<div class="alert alert-success">
<div class="d-flex align-items-center">
<i class="fas fa-check-circle fa-2x me-3"></i>
<div class="flex-grow-1">
<h6 class="mb-1">PDF erfolgreich konvertiert!</h6>
<p class="mb-0">Alle Seiten wurden als PNG-Bilder exportiert und in einer ZIP-Datei verpackt.</p>
</div>
<a id="split-download-link" href="#" class="btn btn-success">
<i class="fas fa-download me-2"></i>ZIP herunterladen
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-lg-4">
<div class="card">
<div class="card-header">
<h6 class="mb-0">
<i class="fas fa-cog me-2"></i>Export-Einstellungen
</h6>
</div>
<div class="card-body">
<div class="mb-3">
<label class="form-label">Bildformat:</label>
<select id="export-format" class="form-select">
<option value="PNG">PNG (verlustfrei)</option>
<option value="JPEG">JPEG (komprimiert)</option>
</select>
</div>
<div class="mb-3">
<label class="form-label">DPI (Auflösung):</label>
<select id="export-dpi" class="form-select">
<option value="150">150 DPI (Standard)</option>
<option value="200">200 DPI (Hoch)</option>
<option value="300">300 DPI (Sehr hoch)</option>
</select>
</div>
<div class="alert alert-info">
<small>
<i class="fas fa-info-circle me-1"></i>
Höhere DPI-Werte ergeben bessere Qualität, aber größere Dateien.
</small>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Extract Pages Panel -->
<div class="tab-pane fade" id="extract-panel" role="tabpanel" aria-labelledby="extract-tab">
<div class="row">
<div class="col-lg-8">
<div class="card">
<div class="card-header">
<h5 class="mb-0">
<i class="fas fa-file-export me-2"></i>Seiten extrahieren
</h5>
</div>
<div class="card-body">
<div class="alert alert-info">
<i class="fas fa-info-circle me-2"></i>
Diese Funktion wird in einer zukünftigen Version verfügbar sein.
Verwenden Sie vorerst die "PDF zu Bildern" Funktion, um einzelne Seiten zu extrahieren.
</div>
</div>
</div>
</div>
<div class="col-lg-4">
<div class="card">
<div class="card-header">
<h6 class="mb-0">
<i class="fas fa-roadmap me-2"></i>Geplante Features
</h6>
</div>
<div class="card-body">
<ul class="list-unstyled mb-0">
<li class="mb-2">
<i class="fas fa-clock text-muted me-2"></i>
<small>Seitenbereiche extrahieren</small>
</li>
<li class="mb-2">
<i class="fas fa-clock text-muted me-2"></i>
<small>PDF-Seiten neu ordnen</small>
</li>
<li class="mb-2">
<i class="fas fa-clock text-muted me-2"></i>
<small>Passwort-geschützte PDFs</small>
</li>
<li>
<i class="fas fa-clock text-muted me-2"></i>
<small>PDF-Metadaten bearbeiten</small>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Loading Modal -->
<div class="modal fade" id="processing-modal" tabindex="-1" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<div class="modal-body text-center p-4">
<div class="spinner-border text-primary mb-3" role="status">
<span class="visually-hidden">Verarbeitung läuft...</span>
</div>
<h5>PDF wird verarbeitet...</h5>
<p class="text-muted mb-0">Bitte warten Sie, während Ihre PDF-Datei verarbeitet wird.</p>
</div>
</div>
</div>
</div>
<!-- Error Area -->
<div id="pdf-tools-error" style="display: none;" class="mt-4">
<div class="alert alert-danger">
<h6><i class="fas fa-exclamation-triangle me-2"></i>Fehler</h6>
<p id="pdf-tools-error-message" class="mb-0"></p>
</div>
</div>
{% endblock %}
{% block scripts %}
<script src="{{ url_for('static', filename='js/pdf-tools.js') }}"></script>
{% endblock %}