PDF-Schnittmuster zusammenfügen

Manchmal is es nötig aus vielen einzelnen PDF-Seiten eine große ganze zusammenzufügen. Das ist z.B. nötig wenn man ein Schnittmuser auf vielen Seiten verteilt ist, aber man den ganzen Plan ausdrucken will.

Dafür gibt es einige Methoden z.B. ein shell script mit Hilfe von [pdftk CLI] und [imagemagick], jedoch nur unter Linux / OSX. Beide Programme gäbe es auch als Windows Versionen jedoch mit GUI und daher eine anstrengende „Klickerei“ auf Dauer, also alles andere als einfach und deshalb hier eine einfachere Methode um PDFs zusammenzufügen.

LaTeX Variante

Für diese Methode benötigt man das Ausgangs-PDF (mit den einzelnen Schnittmuster-Seiten) und Zugang zu LaTeX. Dafür benötigt man jedoch keine Installation man kann dies online sehr einfach machen.

Wir empfehlen sich bei [www.sharelatex.com] zu registrieren (ist kostenfrei). Danach legt man ein neues Projekt an, wählt ‚Blank Project‘ und sucht sich einen Namen aus.

Es öffnet sich ein Fenster mit einem Bereich in dem schon Text steht und in der linken Spalte den vorhandenen Dateien. Damit ShareLatex das Schnittmuster erstellen kann muss noch das Ausgangsfile hochgeladen werden. Dafür auf Upload klicken (ein graues Pfeil Symbol direkt über main.tex) in der linken Spalte des Fensters und das Schnittmuster auswählen. Danach sollte es in der rechten Spalte aufscheinen.

Im Hautpfenster steht der Input für LaTeX – also die Informationen – damit das Programm richtig laufen kann (Anmerkung: es wird üblicherweise verwendet um Bücher/Artikel usw. professionell zu setzen).
Den bestehenden Text kann man löschen und durch den folgenden ersetzen:


\documentclass{article}
% Papiergröße anpassen:
\usepackage[paperheight=160cm,paperwidth=90cm,margin=0mm,nohead,nofoot]{geometry}
\usepackage{pdfpages}
\pagestyle{empty}


\begin{document}
% Anordnung, Seitenrand, Ausgangs-PDF
\includepdf[nup=3x9, pages={1-17, {}, 18-25}, landscape, noautoscale=true, delta=-0.0mm -0.0mm, fitpaper=true]{input.pdf}
\end{document}

Schritt für Schritt werden wir diesen nun anpassen damit schlussendlich das zusammengesetzte Schnittmuster erhaltet.

  1. Zuerst ersetze input.pdf mit dem Dateinamen der Ausgangsdatei die du hochgeladen hast (z.B. kleinformat_PURITO.pdf ).
  2. Als nächstes definiert man die Rastergröße mit der die Seiten angeordnet sind, also wie viele Zeilen und Spalten von Seiten nötig sind. Das wird mit nup=Zeilen x Spalten definiert. Passe es entsprechend deinem Schnittmuster an. Als Beispiel: gibt es vier Zeilen mit max. acht Seiten folgt nup=4x8. Anmerkung: Für die Spaltenanzahl zählt der maximale Wert auch  wenn es Zeilen mit weniger Spalten gibt.
  3. Nun muss man noch die Seitennummern der Ausgangsdatei den Positionen zuordnen. Hier hilft wenn es eine Übersichtsseite gibt (z.B. bei Burda) aber auch ansonsten folgt dies meist einem Muster und man kann durch Versuche leicht auf die richtige kommen.
    Die Nummerierung beginnt links oben. Soll dort die Seite mit Nummer 5 angeordnet sein, und rechts daneben 6, so lautet der Befehl: pages={5, 6}. Ist eine Zeile voll so springt das Programm in die nächste und beginnt links weiter aufzufüllen.
    Bei manchen Schnittmustern sind nicht alle Zeilen vollständig gefüllt. Hier kann man die Leerstelle mit {} füllen.
    Zum Beispiel: pages={4, 5, 6, 7, 8, 9, 10, {}, 11, 12, 13, 14} bei nup=3x4 (3 Zeilen, 4 Spalten) würde in der zweiten Zeile neben Seite zehn eine leere Seite einfügen und weiter in der nächsten Zeile fortsetzen (mit 11).
    Tipp: Zwischenzeitlich einfach mal auf ‚Recompile‘ klicken startet Latex und in der rechten Spalte erscheint der Output. Mit Versuchen kommt man oft am schnellsten zum Ergebnis.
    Weiterer Tipp: Sind die Seiten in aufsteigender Reihenfolge, kann man mit einem Bindestrich die Schreibarbeit verringern. So wird pages={3, 4, 5, 6, 9, 11, 12, 13} zu pages={3-6, 9, 11-13}.
  4. Sollten die Seiten noch durch einen Abstand getrennt werden kann man diesen mit dem delta-Parameter anpassen. Dieser schiebt die Seiten näher zueinander. Ist z.B. zwischen den Zeilen ein Abstand von 10.5mm so ist mit delta=-10.5mm -0.0mm dieser ausgeglichen. Der zweite Werte bestimmt den horizontalen Abstand. Beide Werte können unabhängig voneinander eingestellt werden. Auch hier ist es am einfachsten es einfach so lange auszuprobieren bis es passt. Anmerkung: Komma-Werte mit Punkt als Komma eingeben.
  5. Jetzt fehlt nur noch die Papiergröße. Das geschieht in der Zeile
    \usepackage[paperheight=160cm,paperwidth=90cm,margin=0mm,nohead,nofoot]{geometry}
    paperwidth definiert hier die Höhe des fertigen Schnittmusters und paperheight die Breite (ist gedreht weil im Querformat weiter unten mit landscape definiert).
  6. Schlussendlich klickt man noch einmal Recompile und kann dann das fertige Schnittmuster Downloaden mit dem zweiten Symboel rechts davon (der graue Pfeil nach unten).

Beispiel

Hier eine Abbildung wie die Schnittmuster zusammengestellt wird:

pdf_stitcher_beispiel
Beispiel für Schnittmuster

Es sind also drei Zeilen und vier Spalten somit ergibt sich die Rastergröße zu nup=3x8.
Weiters sieht man auch die nötigen Seitenzahlen und es solle eine Seite leer bleiben. Also ist pages={4, 9, 7, 3, 2, 1,  5, {}, 6, 2, 1, 5}Tipp: Auf einen Schmierzettel die Anordnung aufzeichnen/schreiben hilft ungemein!

Zusammengefasst wäre die Zeile in LaTeX:

\includepdf[nup=3x4, pages={4, 9, 7, 3, 2, 1, 5, {}, 6, 2, 1, 5}, landscape, noautoscale=true, delta=-0.0mm -0.0mm, fitpaper=true]{input.pdf}

Es ist auch noch einmal angegeben wie paperwidth und paperheight die Papiergröße definieren.

Python Variante

Als Alternative kann man ein Python Skript verwenden das die Arbeit abnimmt. Dazu haben wir [pdf_stitcher] erstellt. Folgend beschreibe wir wie man es installiert und verwendet. Diese Version ist ein anspruchsvoller und benötigt die Installation von Python! Zusätzlich ist anzumerken, dass manche PDF-Dateien damit leider nicht zum zusammenfügen sind.

Installation von Python

Für alle die noch nie ein Python Programm verwendet haben: Man kann überprüfen ob Python installiert ist (z.B. bei Mac’s oft von Haus aus schon installiert) in dem man in einer Eingabeaufforderung/terminal python eintippt. Steht Python plus eine Versionsnummer im Fenster ist es installiert, kommt eine Fehlermeldung fehlt es noch. Danach kann das Fenster geschlossen werden.

Fehlt es empfiehlt es sich [Miniconda] in der 2.7 Version herunterzuladen und zu installieren. Miniconda ist quasi eine Minimal-Ausgabe der Python Sprache (keine Angst es ist nicht nötig zu Programmieren!).

Für Mac OS X Benutzer

Zuerst die Datei herunterladen, danach einen terminal öffnen (über Spotlight findet man den terminal). Zunächst muss man der Terminal in das Download-Verzeichniss weisen. Dazu tippt man:
cd Downloads (evtl. Downloads mit dem Dateipfad wohin die Datei gespeichert wurde ersetzen).
Als nächstes startet man das Installationsprogramm mit
bash Miniconda-latest-MacOSX-x86_64.sh
Dabei es es notwendig der Lizenz zuzustimmen mit Enter und zwei mal mit yes zu antworten. Einmal das man die Installation bestätigt und einmal damit es dem System-Pfad hinzugefügt wird (damit es später wieder vom Rechner gefunden wird). Als letztes wird man noch aufgefordert einen neuen terminal zu öffnen und mit conda list zu überprüfen ob alles funktioniert hat. Quelle: [OS X Miniconda Install]

Für Windows Benutzer

Installationsdatei herunterladen und dem Assistenten folgen. Die Standardeinstellung sind passend.

Einrichtung von pdf_stitcher

Als Voraussetzung für pdf_stitcher ist [PyPDF2] notwendig (liefert die nötigen Befehle die von pdf_stitcher verwendet werden). Dafür öffnet man eine Eingabeaufforderung (oder einen Terminal unter OSX/Linux) und tippt
pip install PyPDF2

und drückt Enter.

Dieser Befehl lädt die nötigen Dateien und installiert sie. Sollte dieser nicht funktionieren z.B. mit der Fehlermeldung: pip: command not found ist es am einfachsten auch wie oben beschrieben Miniconda zu installieren (alternativ siehe [pip installieren]) und danach noch einmal pip install PyPDF2 einzugeben.

Nun zum eigentlichen Programm: Auf der Github Seite ([pdf_stitcher]) auf „Download Zip“ klicken und den Inhalt extrahieren. Im Ordner pdf-stitcher-master/bin befindet sich das Skript pdf_stitcher.py.

Benützung von pdf_stitcher

Am besten kopiert man pdf_stitcher.py in den gleichen Ordner wie das Ausgangs-PDF (im folgenden als Beispiel input.pdf genannt). Hinweis: Es empfiehlt sich immer eine Sicherungskopie vom Ausgangs-PDF zu erstellen, auch wenn bei mir nie Probleme aufgekommen sind.

Schlussendlich muss dem Programm noch die Information zur Verfügung gestellt werden wie die einzelnen Seiten zu einem ganzen zusammengefügt werden sollen.

pdf_stitcher_flow_2
Programm-Ablauf

Dazu erstellt man eine *.txt-Datei (hier in dem Beispiel pattern.txt) am besten mit einem einfachen Text-Editor (z.B. notepad unter Windows, gedit in Linux oder TextEdit auf einen Mac). Darin enthalten sind die Positionen der Seiten. Dabei steht jede Zahl für eine Seitennummer der Ausgangsdatei, und die Zeile und Spalte (getrennt durch Beistriche) beschreibt die Position im Zieldokument. Z.B. soll hier Seite 6 in der fertigen Datei in der dritten Zeile an erster Position sein. Danach speichert man auch diese in dem selben Ordner.

Vorsicht: Auf ein Mac erzeugt TextEdit standardmäßig *.rtf – Dateien die nicht funktionieren. Man kann mit TextEdit als einfache Text-Datei speichern in dem man in der Menuleiste Format -> In reinen Text umwandeln klickt, mit OK bestätigt und speichert. Damit hat man auch eine *.txt-Datei.

Bei Burda-Programmen ist die Übersicht ganz hilfreich bei anderen Schnittmustern kann das ein wenig mühsam sein. 

Schlussendlich fehlt nur noch das Programm auszuführen. Dazu öffnet man eine Eingabeaufforderung im Ordner in dem nun pdf_stitcher.py, das Ausgangs-PDF und die Datei mit den Informationen zur Position ist.
Windows-Trick: Bei gehaltener Shift-Taste Rechter-Mausklick in den Ordner und Eingabeaufforderung hier öffnen auswählen.
Bei Mac oder Linux muss man mit
cd [Pfad]
in den Ordner wechseln. Sind z.B. die Dateien im Ordner Dokumente mit dem Unterordner Schnittmuster gespeichert bedeutet das
cd Dokumente/Ordner

Jetzt wird das Programm im Terminal/Eingabeaufforderung mit
python pdf_stitcher.py input.pdf pattern.txt output.pdf
und Enter gestartet.

Zur Erklärung zu erst wird python aufgerufen mit dem Skript-Namen pdf_stitcher.py. Als Input kommt nun der Dateiname der PDF-Datei mit den Einzelseiten (hier input.pdf), und die Information über die Positionen (hier pattern.txt). Weiters ist noch der Dateiname der zu erstellenden Datei anzugeben (hier input.pdf).

Sollten Probleme auftauche bitte einfach kommentieren, wir versuchen sie zu lösen!

Vielen Dank meiner Freundin die dieses Projekt eingefädelt hat und dabei unglaublich geholfen hat!


Header image based on“Sewing patterns“ by AForestFrolic – http://www.flickr.com/photos/stampinmom/4842730898/. Licensed under CC BY 2.0 via Wikimedia Commons.

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s