94 lines
3.6 KiB
Markdown
94 lines
3.6 KiB
Markdown
# impose\_booklet
|
||
|
||
`impose_booklet.py` ist ein kleines Python‑Skript, das A5‑Einzelseiten aus einer PDF so umsortiert, dass sie auf A4‑Bögen im Booklet‑Format duplex gedruckt und anschließend zu A5‑Heftchen gefaltet werden können.
|
||
Mit den neuen Updates unterstützt es jetzt zusätzlich **Border-Trim** und einen **Manga-Modus**.
|
||
|
||
## Features
|
||
|
||
* Flexible Größe der Signaturen (Lagen) über `--sheets N` (Standard: 5 Blätter → 20 Seiten pro Lage)
|
||
* Automatisches Auffüllen mit leeren Seiten, falls die Gesamtseitenzahl nicht durch eine Lage teilbar ist
|
||
* Korrekte Anordnung der Seiten für Vorder- und Rückseite jedes A4‑Bogens
|
||
* **Randbeschnitt** über `--trim X` (in mm): schneidet an allen Rändern X mm ab
|
||
* **Skip-Trim** mit `--skip-trim P1 P2 ...`: Seiten‑Nummern, die vom Trim ausgenommen werden (z. B. Titelblatt)
|
||
* **Manga-Modus** per `--manga-mode`: spiegelt die Imposition horizontal, damit rechts‑nach‑links gelesene Werke richtig aufgehängt werden
|
||
|
||
## Voraussetzungen
|
||
|
||
* Python 3.7 oder neuer
|
||
* `pypdf` (für das Lesen und Schreiben von PDFs)
|
||
* `pymupdf` (für Border-Trim-Funktion):
|
||
|
||
```bash
|
||
pip install pypdf pymupdf
|
||
```
|
||
|
||
## Installation
|
||
|
||
```bash
|
||
pip install pypdf pymupdf
|
||
```
|
||
|
||
## Verwendung
|
||
|
||
```bash
|
||
python impose_booklet.py <input.pdf> <output.pdf> [--sheets N] [--trim X] [--skip-trim S1 S2 ...] [--manga-mode]
|
||
```
|
||
|
||
* `<input.pdf>`: Pfad zur Eingabe‑PDF mit A5‑Einzelseiten
|
||
* `<output.pdf>`: Pfad zur Ausgabedatei (umsortierte PDF)
|
||
* `--sheets N` / `-s N`: Anzahl der Blätter pro Signatur/Lage (Default: 5)
|
||
* `--trim X`: Randbeschnitt in Millimetern (Default: 0)
|
||
* `--skip-trim S1 S2 ...`: Seiten, die nicht beschnitten werden sollen (Default: `1`)
|
||
* `--manga-mode`: aktiviert Spiegel‑Imposition für rechts‑nach‑links
|
||
|
||
### Beispiele
|
||
|
||
1. **Standard‑Booklet** (60 Seiten, 5 Blätter pro Lage):
|
||
|
||
```bash
|
||
python impose_booklet.py meinbuch.pdf meinbuch_booklet.pdf --sheets 5
|
||
```
|
||
|
||
2. **Mit Randbeschnitt** (10 mm an allen Rändern, Titelblatt ausgenommen):
|
||
|
||
```bash
|
||
python impose_booklet.py meinbuch.pdf meinbuch_trim.pdf --trim 10 --skip-trim 1
|
||
```
|
||
|
||
3. **Manga‑Modus** (rechts‑nach‑links Lesung):
|
||
|
||
```bash
|
||
python impose_booklet.py manga.pdf manga_booklet.pdf --sheets 4 --manga-mode
|
||
```
|
||
|
||
4. **Kombiniert** (Randbeschnitt + Manga):
|
||
|
||
```bash
|
||
python impose_booklet.py manga.pdf manga_trim_booklet.pdf --trim 5 --skip-trim 1 --manga-mode
|
||
```
|
||
|
||
## Funktionsweise im Detail
|
||
|
||
1. **Einlesen**: Lädt alle Seiten der Eingabe‑PDF als A5‑Einzelseiten.
|
||
2. **(Optional) Randbeschnitt**: Bei `--trim X` werden alle Seiten (außer `--skip-trim`) um X mm an jedem Rand beschnitten.
|
||
3. **Berechnung**: Bestimmt `pages_per_sig = sheets * 4` und die Anzahl der Signaturen = `ceil(total_pages / pages_per_sig)`.
|
||
4. **Auffüllen**: Falls nötig, werden leere Seiten angehängt, damit jede Signatur gleich groß ist.
|
||
5. **Imposition**:
|
||
|
||
* **Normal-Modus**: Reihenfolge je Blatt: Front‑Left = äußerste Seite, Front‑Right = erste, Back‑Left = zweite, Back‑Right = vorletzte.
|
||
* **Manga-Modus**: horizontale Spiegelung der vier Slots (damit die Lesesequenz rechts → links erhalten bleibt).
|
||
6. **Speichern**: Schreibt die neu geordnete PDF in die Ausgabedatei.
|
||
|
||
## Troubleshooting
|
||
|
||
* **Unterschiedliche Seitengrößen**: Das Skript nutzt die MediaBox der ersten Seite als Vorlage für Leerseiten.
|
||
* **Keine Duplexdruck-Funktion** im Druckertreiber: Sicherstellen, dass beidseitiger Druck unterstützt wird.
|
||
|
||
## Lizenz & Haftungsausschluss
|
||
|
||
Dieses Projekt steht unter der MIT-Lizenz. Keine Gewährleistung für kommerzielle Eignung.
|
||
|
||
---
|
||
|
||
*Viel Erfolg beim Drucken und Falten!*
|