Wie verschmelze ich mehrere PDF-Dateien?


Antworten:


209

PDF-Shuffler Installieren Sie PDF-Shuffler

Wenn Sie ein Tool mit einer einfachen Benutzeroberfläche möchten, versuchen Sie es mit pdfshuffler . Es ermöglicht das Zusammenführen von PDFs sowie das Neuanordnen und Löschen von Seiten. Für die Stapelverarbeitung und / oder kompliziertere Aufgaben ist pdftk natürlich leistungsfähiger.

Screenshot von PDF-Shuffler


Ich habe es versucht - es hat am 10.04. Nicht funktioniert
David Oneill

Am 12.04 beschwert sich pdfshuffler immer, dass es "zu viele Werte zum Entpacken" gibt, was es unbrauchbar macht.
Hört am

8
Installiert und funktioniert wie ein Zauber am 14.04. Vielen Dank!!
Zlatty

1
Ich kann auch bestätigen , pdfshufflerfunktioniert auf 14,04 amd64.
conualfy

2
Funktioniert auch am 16.04.1
Sanjay Manohar

334

pdftkInstallieren Sie pdftk

So fügen Sie zwei PDF-Dateien zusammen file1.pdfund file2.pdf:

pdftk file1.pdf file2.pdf cat output mergedfile.pdf

Weitere Informationen finden Sie hier Way Back Machine .


5
pdftk ist fehlerhaft - bugs.launchpad.net/ubuntu/+source/pdftk/+bug/779908 . gs mag langsam sein, aber funktioniert perfekt [Antwort von IgnitE]
Pushpak Dagade

@PushpakDagade Ghostscript verzerrt Anmerkungen, insbesondere Kommentare, die markiert wurden (Kontrollkästchen mit Häkchen markiert), haben dieses Häkchen nicht mehr. Ich weiß nicht, wie ich das umgehen soll. Wenn Sie PDF v1.5 + 1.6 zusammenführen, wird standardmäßig 1.4 ausgegeben. Das ist seltsames Verhalten.
Jonathan Komar

2
pdftk hat eine ungewöhnliche Verwendung, bei der Befehle catund outputverschiedene Eingabeargumente gefolgt von einem Ausgabeargument verwendet werden.
Jeff Puckett

3
Das Paket scheint im Jahr 2018.04 entfernt worden zu sein.
Nicolas Raoul

1
@NicolasRaoul Ich habe es gerade als Schnellinstallation heruntergeladen.
Max

161

Ghostscript ist ein Paket (standardmäßig in Ubuntu verfügbar), mit dem Sie PostScript- und PDF-Dateien in anderen Formaten anzeigen oder drucken oder diese Dateien in andere Formate konvertieren können.
Geben Sie Folgendes ein, um Ghostscript zum Kombinieren von PDF-Dateien zu verwenden:

gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dAutoRotatePages=/None -sOutputFile=finished.pdf  file1.pdf file2.pdf

Hier ist eine kurze Erklärung des Befehls:

gs         starts the Ghostscript program.
-dBATCH    once Ghostscript processes the PDF files, it should exit.
           If you don't include this option, Ghostscript will just keep running.
-dNOPAUSE  forces Ghostscript to process each page without pausing for user interaction.
-q         stops Ghostscript from displaying messages while it works
-sDEVICE=pdfwrite 
           tells Ghostscript to use its built-in PDF writer to process the files.
-sOutputFile=finished.pdf
           tells Ghostscript to save the combined PDF file with the specified name.
-dAutoRotatePages=/None
           Acrobat Distiller parameter AutoRotatePages controls the automatic orientation selection algorithm: For instance: -dAutoRotatePages=/None or /All or /PageByPage.

Ihre Eingabedateien müssen nicht einmal PDF-Dateien sein. Sie können auch PostScript- oder EPS-Dateien oder eine beliebige Mischung der drei verwenden.

Mit Ghostscript können Sie viel anfangen. Sie können die Dokumentation für weitere Details lesen .

Quelle


2
Stimmt, aber es ist unglaublich langsam. Ich habe gerade versucht, einseitige PDF-Dateien im Format 45 x 400 KB zu verketten. pdftkdauerte 0m0.484s, gsdauerte 1m32.898s (das ist fast 200x langsamer) Die Datei von gswar allerdings um 21% kleiner.
Aidan

2
Dieser Befehl funktioniert auch, wenn Sie einen Platzhalter für die Liste der zu kombinierenden Dateien verwenden. Ersetzen Sie beispielsweise file1.pdf file2.pdfmitfile*.pdf
Antonios Hadjigeorgalis

2
Bei mir wurde gsmit einigen "nicht konformen" PDFs gearbeitet, bei denen pdftkes nur ewig laufen würde.
NTC2

1
Verwenden Sie die -dPDFSETTINGS=/prepressOption Qualitätsverbesserung.
Vielen

6
@AntoniosHadjigeorgalis nur für Referenz- und gutes Verständnis: Das ist nicht der Befehl Platzhalter unterstützen, das ist eigentlich der Schale ersetzt file*.pdfmit file1.pdf file2.pdfbevor die Argumente zu dem Befehl übergeben.
Midgard

82

Sie können pdfunite auch zum Zusammenführen von PDF-Dokumenten verwenden:

pdfunite in-1.pdf in-2.pdf in-n.pdf out.pdf

12
WARNUNG: Eine vorhandene Datei out.pdfwird ohne Warnung überschrieben, pdfunite *.pdffunktioniert also nicht wie erwartet.
krlmlr

1
@krlmlr Sie können die Ausgabe jederzeit in ein anderes Verzeichnis verschieben.
BЈовић

Fair genug, cpüberschreibt auch das letzte Argument ohne Vorwarnung. Dies ist nur für rauschende Benutzer (wie ich) - Ich hatte Glück, dass ich eine Sicherungskopie der fraglichen Datei hatte ...
krlmlr

1
Positive Bewertung: Dies ist ein einfaches Befehlszeilentool ohne grafische Benutzeroberfläche, wie viele der anderen Antworten hier. Es fasst die Komplexität der (weitgehend äquivalenten) GhostScript-Lösung gut zusammen.
Tripleee

1
Das geht auch sehr schnell. Macht den Job gut. Auf einem sehr langsamen Server (aws t1.micro) benötigt gs 9 Sekunden, pdftk 4 Sekunden und diese pdfunite 0,9 Sekunden, um zwei Dateien zusammenzuführen!
rsmoorthy

34

PDF-Kette Installieren Sie PDF Chain

Eine sehr schöne Lösung ist PDFChain. Die GUI ist ein Frontend von PDFTK, mit dem Sie PDF-Dateien zusammenführen, teilen oder sogar Hintergrundinformationen hinzufügen können.


Das ist die beste Antwort. Es funktioniert einwandfrei, unabhängig von der Ubuntu-Version.
Paulo Coghi

Arbeitete problemlos auf Ubuntu 14.04!
Mein account_ram

Funktioniert hervorragend unter Ubuntu 18.04!
orschiro


@ user2413 das ist ein Schnellspeicher, nicht die einzige Quelle für Software in Ubuntu. Der Versuch, in zu suchen, aptergab jedoch auch keine Ergebnisse: /
jena


8

Ein alternativer Ansatz besteht darin, Latex wie in diesem Beitrag beschrieben zu verwenden ( ohne Root-Zugriff, vorausgesetzt, Sie haben pdflatex installiert): https://tex.stackexchange.com/questions/8662/merge-two-pdf-files-output-by- Latex

Dies ist nützlich, wenn Sie weder über die genannten Tools noch über Root-Rechte verfügen, aber über pdflatex.

Ich kopiere den folgenden tex-Code zum Zusammenführen file1.pdfund file2.pdf. Erstellen Sie eine Datei mit dem Namen output.texund setzen Sie:

\documentclass{article}
\usepackage{pdfpages}
\begin{document}
\includepdf[pages=-]{file1}
\includepdf[pages=-]{file2}
\end{document}

Und zum Kompilieren verwenden Sie einfach: pdflatex output.tex

Die zusammengeführte Datei wird als benannt output.pdf.


6

Ich verwende pdfseparate, um bestimmte Seiten aus einer großen PDF-Datei zu extrahieren:

pdfseparate -f  156 -l 157 input.pdf  output_%d.pdf 
pdfseparate -f  1   -l 2   input.pdf  output_%d.pdf 

und danach schließe ich mich allen per Kommando an:

pdfunite $(ls -v output_*.pdf | tr '\n' ' ') out$(date  +%Y-%m-%d_%H_%M_%S ).pdf

Dies verbindet:

output_1.pdf output_2.pdf output_156.pdf output_157.pdf  

in:

out2014-12-14_23_25_36.pdf

Vielleicht gibt es einen einfacheren Weg, um damit umzugehen ... :-)


Die Prozessersetzung ist überflüssig und möglicherweise sogar schädlich . Eine korrekte und viel einfachere Befehlszeile ist, pdfunite output_*.pdf out$(date +%Y-%m-%d-%H_%M_%S).pdfaber es fehlt die Reihenfolge ls -v. Eine offensichtliche und triviale Lösung besteht darin, Ihre Dateien so zu benennen, dass sie auf natürliche Weise in der Reihenfolge sortiert werden, in der Sie sie einschließen möchten. Wenn Sie unbedingt wollen ls -v, können Sie zumindest die Pfeife verlieren tr, was hier nichts bringt.
Tripleee




1

Hier ist mein Ansatz:

  • Ich wollte, dass es leicht zugänglich ist, also habe ich in Nautilus eine Verknüpfung mit der rechten Maustaste erstellt (siehe https://help.ubuntu.com/community/NautilusScriptsHowto ).
  • Ich wollte, dass es sehr schnell geht, also habe ich pdfunite verwendet
  • pdfunite akzeptiert die Dateipfade nur in der Mitte des Befehls, daher musste ich mir den Kopf kratzen, um die Leerzeichen in den Dateipfaden zu verwalten. Daher bin ich davon ausgegangen, dass alle Dateipfade mit "/ home /" beginnen und mit ".pdf" enden.

Hier ist das Ergebnis:

#!/bin/sh
CLEANED_FILE_PATHS=$(echo $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS | sed 's,.pdf /home/,.pdf\\n/home/,g')
echo $CLEANED_FILE_PATHS | bash -c 'IFS=$'"'"'\n'"'"' read -d "" -ra x;pdfunite "${x[@]}" merged.pdf'

Juste fügen Sie dieses Skript in

/home/Ihr_Benutzername/.local/share/nautilus/scripts

und nennen Sie es "merge_pdfs.sh" (zum Beispiel). Machen Sie es dann ausführbar (Rechtsklick auf merge_pdfs.sh -> Registerkarte Berechtigungen -> Häkchen bei "Datei als Programm ausführen lassen"

Um PDF-Dateien zusammenzuführen, müssen Sie sie nur auswählen -> Rechtsklick -> Skripte -> merge_pdfs.sh und es wird eine "merged.pdf" -Datei im selben Verzeichnis erstellt

Ich hoffe es hilft!

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.