Wie kann ich die Seiten eines PDFs in der Mitte aufteilen?

38

Kennt jemand eine gute Möglichkeit, die Seiten eines PDFs in der Mitte in zwei neue Seiten aufzuteilen?

Um es klar zu sagen, ich versuche nicht , bereits vorhandene Seiten aus einem PDF herauszusplitten. Ich versuche, zwei neue Seiten aus einer vorhandenen einzelnen Seite zu erstellen.

YGA
quelle
warum willst du das machen kleinere Seiten bekommen?
Akira
Nun, MS Office ist keine Freeware, aber wenn Sie MS Office 2007 haben, können Sie Dokumente einfach als PDF-Dateien speichern und tun, was Sie möchten ...
Owen
Siehe auch stackoverflow.com/q/13345593/321973
Tobias Kienzler

Antworten:

26

Probieren Sie BRISS .

Alt-Text

Sie können jede Seite in beliebig viele Unterseiten aufteilen, indem Sie Regionen mit einer GUI definieren. Es gruppiert alle ähnlichen Seiten für Sie in Gruppen, sodass Sie Regionen für diese Gruppe einmal definieren können.

Es ist plattformübergreifend, kostenlos und Open Source.

schäbig
quelle
Dies scheint die Dateigröße zu erhöhen (mal "Anzahl der Ausgabeseiten pro Eingabeseite"), da der ursprüngliche Seiteninhalt und eine Zuschneidebox für jede zugeschnittene Seite verwendet werden. Wenn Sie eine kleine Dateigröße benötigen, können Sie die Ausgabedatei auf PS drucken und anschließend in PDF konvertieren. In diesem Fall kann es jedoch zu Qualitätsverlusten kommen (z. B. aufgrund von Bitmap-Schriftarten).
Tanius
37

Sie können dies mit Hilfe von Ghostscript lösen. pdftkallein kann das nicht (nach bestem Wissen). Ich gebe Ihnen die Befehlszeilenschritte, um dies manuell zu tun. Es wird einfach sein, dies als Prozedur zu skripten, auch mit verschiedenen Parametern für Seitengrößen und Seitenzahlen. Aber du hast gesagt, dass du das selbst machen kannst ;-)

Wie man das mit Hilfe von Ghostscript löst ...

... und zum Spaß habe ich es kürzlich nicht mit einer Eingabedatei mit "Double-Up" -Seiten gemacht, sondern mit einer mit "Treble-Ups". Sie können die Antwort für diesen Fall in dieser anderen Antwort lesen .

Ihr Fall ist noch einfacher. Sie scheinen etwas Ähnliches zu haben:

+------------+------------+   ^
|            |            |   |
|      1     |      2     |   |
|            |            | 595 pt
|            |            |   |
|            |            |   |
|            |            |   |
+------------+------------+   v
             ^
            fold
             v
+------------+------------+   ^
|            |            |   |
|      3     |      4     |   |
|            |            | 595 pt
|            |            |   |
|            |            |   |
|            |            |   |
+------------+------------+   v
<---------- 842 pt -------->

Sie möchten 1 PDF mit 4 Seiten erstellen, von denen jede die Größe von 421 pt x 595 pt hat.

Erster Schritt

Extrahieren wir zunächst die linken Abschnitte von jeder der Eingabeseiten:

gs \
    -o left-sections.pdf \
    -sDEVICE=pdfwrite \
    -g4210x5950 \
    -c "<</PageOffset [0 0]>> setpagedevice" \
    -f double-page-input.pdf

Was haben diese Parameter bewirkt?

Erstens wissen, dass in PDF 1 Zoll == 72 Punkte . Dann ist der Rest:

  • -o ...............:Benennt die Ausgabedatei. Implizit auch verwendet -dBATCH -dNOPAUSE -dSAFER.
  • -sDEVICE=pdfwrite : Wir wollen PDF als Ausgabeformat.
  • -g................:Legt die Größe des Ausgabemediums in Pixel fest. Die Standardauflösung von pdfwrite beträgt 720 dpi. Multiplizieren Sie daher mit 10, um eine Übereinstimmung für PageOffset zu erhalten.
  • -c "..............:Fordert Ghostscript auf, das angegebene PostScript-Code-Snippet direkt vor der Haupteingabedatei zu verarbeiten (worauf folgt -f).
  • <</PageOffset ....:Legt die Verschiebung des Seitenbilds auf dem Medium fest. (Für linke Seiten hat die Verschiebung nach natürlich [0 0]keine wirkliche Auswirkung.)
  • -f ...............: Verarbeiten Sie diese Eingabedatei.

Welches Ergebnis hat der letzte Befehl erzielt?

Dieses:

Output file: left-sections.pdf, page 1
+------------+  ^
|            |  |
|     1      |  |
|            |595 pt
|            |  |
|            |  |
|            |  |
+------------+  v

Output file: left-sections.pdf, page 2
+------------+  ^
|            |  |
|     3      |  |
|            |595 pt
|            |  |
|            |  |
|            |  |
+------------+  v
<-- 421 pt -->

Zweiter Schritt

Als nächstes die richtigen Abschnitte:

gs \      
    -o right-sections.pdf \
    -sDEVICE=pdfwrite \
    -g4210x5950 \
    -c "<</PageOffset [-421 0]>> setpagedevice" \
    -f double-page-input.pdf

Ergebnis:

Output file: right-sections.pdf, page 1
+------------+  ^
|            |  |
|     2      |  |
|            |595 pt
|            |  |
|            |  |
|            |  |
+------------+  v

Output file: right-sections.pdf, page 2
+------------+  ^
|            |  |
|     4      |  |
|            |595 pt
|            |  |
|            |  |
|            |  |
+------------+  v
<-- 421 pt -->

Letzter Schritt

Jetzt kombinieren wir die Seiten in einer Datei. Wir könnten das auch mit Ghostscript machen, aber wir werden pdftkstattdessen verwenden, weil es für diesen Job schneller ist:

pdftk \
  A=right-sections.pdf \
  B=left-sections.pdf \
  shuffle A B \
  output single-pages-output.pdf
  verbose

Getan. Hier ist das gewünschte Ergebnis. 4 verschiedene Seiten im Format 421x595 pt.

Ergebnis:

+------------+ +------------+ +------------+ +------------+   ^
|            | |            | |            | |            |   |
|     1      | |     2      | |     3      | |     4      |   |
|            | |            | |            | |            | 595 pt
|            | |            | |            | |            |   |
|            | |            | |            | |            |   |
|            | |            | |            | |            |   |
+------------+ +------------+ +------------+ +------------+   v
<-- 421 pt --> <-- 421 pt --> <-- 421 pt --> <-- 421 pt -->
Kurt Pfeifle
quelle
3
Ziemlich! Sie sollten dies wirklich in jeder Antwort verwenden, wenn Sie weiterhin kostenlose Upvotes erhalten möchten!
Ivo Flipse
2
Der zweite Schritt ist nur für mich gearbeitet , wenn ich eine negative verwendet Offset: "<</PageOffset [-421 0]>> setpagedevice". Ich denke, es hängt von der Ausrichtung der Originaldatei ab. Trotzdem eine ausgezeichnete Antwort. :)
Moraes
1
Für mich hat der zweite Schritt auch mit dem Minuszeichen
geklappt
9

Danke an @marttt und deren Antwort in Unix & Linux .

Sie können verwenden mutool(was als Teil von kommt mupdf):

mutool poster -x 2 input.pdf output.pdf

Sie können auch verwenden, -ywenn Sie eine vertikale Aufteilung durchführen möchten.

Peque
quelle
Dies ist eine einfache Lösung, danke. Leider gibt es keine Möglichkeit, den Inhalt der Seite zu verschieben, um die Ränder anzupassen - verwenden Sie dazu die von Kurt Pfeifle beschriebene Methode.
Ján Lalinský
0

Um die Antwort von @ Kurt zu erläutern (da ich nicht genug Reputationspunkte habe, um sie zu kommentieren), stellen Sie zunächst sicher, dass die von Ihnen verwendeten Abmessungen nicht auf den Abmessungen der Crop Box basieren, wenn sie sich von den Abmessungen der Media Box unterscheiden. Die Ausgabegröße basiert auf den Media Box-Dimensionen, der Versatz scheint jedoch die Crop Box-Dimensionen zu verwenden.

Für eine Gatefold-Seite mit einer 20.0833 x 13.833-Medienbox und einer 19.25 x 13.0-Zuschnittsbox, die mit der Beschnittbox in meinem Dokument identisch ist, teilen Sie sie auf der linken Seite in zwei Seiten auf:

gs -o left.pdf -sDEVICE=pdfwrite -g7230x9960 -c "<</PageOffset [0 0]>> setpagedevice" -f gatefold.pdf

Die richtige Seite:

gs -o right.pdf -sDEVICE=pdfwrite -g7230x9960 -c "<</PageOffset [-693 0]>> setpagedevice" -f gatefold.pdf

Und dann genäht sie mit pdftk left.pdf right.pdf output final.pdf.

Eine Alternative wäre, den Zuschnittrahmen auf den gleichen Wert wie den Medienrahmen einzustellen. dann wäre der Offset -723. In diesem Fall muss der Zuschnitt jedoch zurückgesetzt werden, damit die Seiten nahtlos angezeigt werden. Andernfalls stellen Sie das Medium auf Zuschneiden ein.

motorbaby
quelle
Beachten Sie, dass sich die Medienfelder nach dem Aufteilen der Seiten mit diesen Befehlsoptionen nicht ändern. Nur die Ernte ändert sich. Wenn Sie eine Seite in mehrere Seiten aufteilen, behalten die neuen Seiten die Abmessungen der Medienbox von der alten Seite bei. Benötigt sed, um die Abmessungen der Medienbox zu ändern. Ich weiß jedoch nicht, wie ich die Medienbox auf Zuschneiden einstellen soll, ohne Zahlen in den Befehl aufzunehmen.
Motorbaby
Hoppla. Ich meine, die neuen Seiten behalten die Abmessungen des Zuschneidefelds von der alten Seite.
Motorbaby
Habe einen Fehler in Acrobat PDFs gefunden. Visuell können die Abmessungen von cropBox in „Seitenrahmen festlegen“ in Acrobat angezeigt werden. Die Abmessungen von cropBox nach dem Teilen des Gatefold mit Ghostscript haben die alten Seitenabmessungen jedoch auf einer anderen Ebene beibehalten. Dies ist in den Preflight-Analyse-Informationen in Acrobat zu sehen. Nachdem Sie den Zuschnitt in Acrobat auf der rechten Seite der linken Seite vorübergehend auf eine beliebige Zahl eingestellt und anschließend auf 0 zurückgesetzt haben, werden auch die anderen Feldabmessungen (Beschnitt, Grafik und Zuschnitt) angepasst. Dies behebt das Problem, bei dem die CropBox-Daten immer noch die alten Seitenabmessungen aufwiesen. Die rechte Seite war etwas anders.
Motorbaby