Wie kann ich mehrere PDF-Dateien zu einer großen PDF-Datei zusammenführen / konvertieren?
Ich habe Folgendes versucht, aber der Inhalt der Zieldatei war nicht wie erwartet:
convert file1.pdf file2.pdf merged.pdf
Ich benötige eine sehr einfache / grundlegende Befehlszeilenlösung (CLI). Am besten wäre es, wenn ich die Ausgabe des Zusammenführens / Konvertierens direkt in pdf2ps
(wie ursprünglich in meiner zuvor gestellten Frage hier versucht: Linux-Piping (konvertieren -> pdf2ps -> lp) ) weiterleiten könnte .
linux
pdf
merge
command-line-interface
Alkohol
quelle
quelle
Antworten:
In Anbetracht dessen, dass
pdfunite
Poppler Teil einer höheren Wahrscheinlichkeit ist, installiert zu werden, ist die Verwendung auch einfacher alspdftk
:quelle
pdfunite *.pdf out.pdf
Folgendes verwenden: Angenommen, in diesem Verzeichnis ist kein anderes PDF vorhanden, und die Reihenfolge wird durch "*" beibehalten. Wenn es nicht beibehalten wird, wird es mithilfe von Bereichen: Dateiname_ {0..9} .pdf gelöst.Probieren Sie das gute Ghostscript aus:
oder sogar auf diese Weise für eine verbesserte Version für PDFs mit niedriger Auflösung (danke an Adriano für diesen Hinweis):
In beiden Fällen ist die Ausgangsauflösung viel höher und besser als bei Verwendung von convert:
Auf diese Weise müssten Sie nichts anderes installieren, sondern arbeiten nur mit dem, was Sie bereits auf Ihrem System installiert haben (zumindest sind beide standardmäßig in meinem Rhel enthalten).
Hoffe das hilft,
UPDATE: Zunächst einmal vielen Dank für all Ihre netten Kommentare! Nur ein Tipp, der für euch vielleicht funktioniert. Nach dem Googeln habe ich einen großartigen Trick gefunden, um die Größe von PDFs zu verkleinern. Ich habe damit ein PDF von 300 MB auf nur 15 MB mit einer akzeptablen Auflösung reduziert! und das alles mit dem guten Ghostscript, hier ist es:
Prost!!
quelle
gs
läuft sehr schnell und komprimiert viel. Die Qualität hat sich jedoch stark verbessert, nachdem ich diesen Parameter verwendet habe:-dPDFSETTINGS=/prepress
-dPDFSETTINGS=/prepress
den sehr schönen Effekt hat, zu breite Seiten zu drehen und störende horizontale Bildlaufleisten zu erzwingen..bash_profile
und Sie haben eine nette Verknüpfung:pdfmerge() { gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -sOutputFile=$@ ; }
Dies erspart Ihnen einige Eingaben, wenn Sie den Befehl häufig verwenden müssen. Die Verwendung sieht folgendermaßen aus:pdfmerge merged.pdf mine1.pdf mine2.pdf
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -sOutputFile=merged.pdf mine1.pdf mine2.pdf
kann auf das gekürzt werdengs -q -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -o merged.pdf mine1.pdf mine2.pdf
. Aus der Dokumentation : "Als praktische Abkürzung können Sie die-o
Option gefolgt von der Ausgabedateispezifikation wie oben beschrieben verwenden. Die-o
Option legt auch die Optionen-dBATCH
und fest-dNOPAUSE
. Dies ist eine schnelle Möglichkeit zum Aufrufenghostscript
, um eine oder mehrere Eingabedateien zu konvertieren."Es tut mir leid, ich habe es geschafft, die Antwort selbst mit Google zu finden und ein bisschen Glück :)
Für Interessierte;
Ich habe das pdftk (pdf toolkit) auf unserem Debian-Server installiert und mit dem folgenden Befehl die gewünschte Ausgabe erzielt:
ODER
Dies kann wiederum direkt in pdf2ps geleitet werden.
quelle
gs -q -sPAPERSIZE=letter -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=out.pdf in1.pdf in2.pdf in3.pdf ...
pdftk file1.pdf file2.pdf cat output out.pdf
wird die zusammengeführte Datei alsout.pdf
pdftk
ist für EL7-Systeme aufgrund fehlender Abhängigkeit nicht verfügbarlibgcj
.Dies ist die einfachste Lösung, wenn Sie mehrere Dateien haben und die Namen nicht einzeln eingeben möchten:
qpdf --empty --pages *.pdf -- out.pdf
quelle
Außerdem
pdfjoin a.pdf b.pdf
wird eine neueb-joined.pdf
mit den Inhalten von a.pdf und b.pdf erstelltquelle
Sie können den Befehl convert direkt verwenden.
z.B
quelle
convert -compress lossless sub1.pdf sub2.pdf sub3.pdf merged.pdf
, aber die resultierende Dateigröße könnte viel zu groß sein. Ich würdeconvert -compress jpeg -quality 90 sub1.pdf sub2.pdf sub3.pdf merged.pdf
stattdessen vorschlagen .pdfunite
Es ist in Ordnung, ganze PDFs zusammenzuführen. Wenn Sie beispielsweise die Seiten 2-7 aus Datei1.pdf und die Seiten 1,3,4 aus Datei2.pdf möchten, müssen Siepdfseparate
die Dateien für jede Seite in separate PDFs aufteilenpdfunite
.An diesem Punkt möchten Sie wahrscheinlich ein Programm mit mehr Optionen.
qpdf
ist das beste Dienstprogramm, das ich zum Bearbeiten von PDFs gefunden habe.pdftk
ist größer und langsamer und Red Hat / Fedora packen es nicht, weil es von gcj abhängig ist. Andere PDF-Dienstprogramme haben Mono- oder Python-Abhängigkeiten. Ich fandqpdf
eine viel kleinere Ausgabedatei als die Verwendungpdfseparate
undpdfunite
Zusammenstellung von Seiten zu einer 30-seitigen Ausgabe-PDF, 970 kB gegenüber 1.6450 kB. Da es viel mehr Optionen bietet, istqpdf
die Befehlszeile nicht so einfach. Die ursprüngliche Anforderung zum Zusammenführen von Datei1 und Datei2 kann mit ausgeführt werdenquelle
pdftk
mehr verpackt, weil es darauf angewiesen istgcj
, dass die Unterstützung meiner Meinung nach eingestellt wurde. Trotz der Suche nach PDF-Manipulationswerkzeugen über habepacman -Ss pdf
ich dies verpasst. Danke für diese Antwort! Ich sollte viel mehr Upvotes erhalten, damit es direkt neben Vorschlägen fürpdfunite
oder angezeigt wirdpdftk
.Apache PDFBox http://pdfbox.apache.org/
PDFMerger Diese Anwendung nimmt eine Liste von PDF-Dokumenten und führt sie zusammen, wobei das Ergebnis in einem neuen Dokument gespeichert wird.
quelle
Verwenden Sie PDF-Tools von Python https://pypi.python.org/pypi/pdftools/1.0.6
Laden Sie die Datei tar.gz herunter, dekomprimieren Sie sie und führen Sie den folgenden Befehl aus
Sie sollten pyhton3 installieren, bevor Sie den obigen Befehl ausführen
Diese Tools unterstützen die folgenden
Weitere Details finden Sie unter dem folgenden Link und es ist Open Source
https://github.com/MrLeeh/pdftools
quelle
gs
(alle oben aufgeführten Varianten), eine einfache Zusammenführung von zwei PDFs, 2 MB und 500 KB, dauerte Minuten und führte zu einer 40 MB-Datei!pdftools
wird sofort mit identischer Dateigröße abgeschlossen.Sie können Sejda-Konsole , kostenlos und Open Source verwenden. Entpacke es und starte
sejda-console merge -f file1.pdf file2.pdf -o merged.pdf
Es bewahrt Lesezeichen, Linkanmerkungen, Acroformen usw. Es hat tatsächlich eine ganze Reihe von Optionen, mit denen Sie spielen können. Führen
sejda-console merge -h
Sie sie einfach aus , um sie alle anzuzeigen .quelle
Wenn Sie alle heruntergeladenen Bilder in ein PDF konvertieren möchten, führen Sie sie aus
convert img{0..19}.jpg slides.pdf
quelle
Ich stimme der
pdfunite
Empfehlung zu. Ich habe jedochArgument list too long
Fehler erhalten, als ich versucht habe,> 2k PDF-Dateien zusammenzuführen.Ich habe mich für dieses und zwei externe Pakete an Python gewandt: PyPDF2 (um alle PDF-bezogenen Dinge zu erledigen ) und natsort (um eine "natürliche" Art der Dateinamen des Verzeichnisses zu erstellen). Falls dies jemandem helfen kann:
quelle
date +%s
.pdf' && pdfunite output - *. pdf output.pdf (Dadurch werden Stapel von 500 Dateien erstellt, die seriell verarbeitet werden. Die resultierenden temporären Dateien werden in der richtigen Reihenfolge sortiert und erstellen Sie eine entsprechende Ausgabedatei; Sie müssen die temporären Dateien nach)Hier ist eine Methode, die funktioniert und einfach zu implementieren ist. Dies erfordert sowohl die fpdf- als auch die fpdi- Bibliothek, die hier heruntergeladen werden können:
quelle
Ich bin voreingenommen, einer der Entwickler von PyMuPDF (einer Python-Bindung von MuPDF) zu sein.
Sie können damit einfach machen, was Sie wollen (und vieles mehr). Der Skelettcode funktioniert folgendermaßen:
Das ist alles. Es stehen verschiedene Optionen zur Verfügung, um nur Seitenbereiche auszuwählen, ein gemeinsames Inhaltsverzeichnis zu führen, die Seitenreihenfolge umzukehren oder die Seitenrotation zu ändern usw. usw.
Wir sind auf PyPi.
quelle
Ich mag die Idee von Chasmo, aber ich bevorzuge es, die Vorteile von Dingen wie zu nutzen
Wenn Sie mehrere Quelldateien angeben, werden
convert
diese zu einem gemeinsamen PDF zusammengeführt. Dieser Befehl führt alle Dateien mit der.pdf
Erweiterung im tatsächlichen Verzeichnis inmerged.pdf
das übergeordnete Verzeichnis ein .quelle
$(ls *.pdf)
anstelle eines einfachen Platzhalters*.pdf
?ls *.pdf
verlieren Sie mit dem Platzhalter die Kontrolle über die Reihenfolge der zusammengeführten Dateien , wenn Sie auf die Antwort @firegurafiku antworten . In einem Beispiel wird die folgende Liste: 1.pdf, 2.pdf, 3.pdf, ..., 10.pdf, ..., 100.pdf tatsächlich wie 1.pdf, 10.pdf, 100 zusammengeführt. pdf, 2.pdf, 3.pdf (aufgrund der standardmäßigen Linux-Art, Dateien zu bestellen - hier finden Sie weitere Details zu diesem Problem - stackoverflow.com/q/22948042/1977012 ).Obwohl es sich nicht um eine Befehlszeilenlösung handelt, kann es
macos
Benutzern helfen :quelle
Sie können die kostenlosen und Open-Source- PDF-Tools verwenden (Haftungsausschluss: Ich bin der Autor davon).
Es ist im Grunde eine Python-Schnittstelle zum Latex
pdfpages
Paket.Um PDF-Dateien einzeln zusammenzuführen, können Sie Folgendes ausführen:
Um alle PDF-Dateien in einem Verzeichnis zusammenzuführen, können Sie Folgendes ausführen:
quelle