linux - zusammenfügen - Mehrere PDF-Dateien in ein PDF zusammenführen/konvertieren




ubuntu pdf (9)

Wie könnte ich mehrere PDF-Dateien in eine große 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 brauche eine sehr einfache / grundlegende Befehlszeilenlösung (CLI). Am besten wäre es, wenn ich die Ausgabe von merge / convert direkt in pdf2ps (wie ursprünglich in meiner zuvor gestellten Frage versucht: Linux piping (convert -> pdf2ps -> lp) ).


Apache PDFBox http://pdfbox.apache.org/

PDFMerger Diese Anwendung wird eine Liste von PDF-Dokumenten aufnehmen und zusammenführen, wobei das Ergebnis in einem neuen Dokument gespeichert wird.

Verwendung: java -jar pdfbox-app-xyzjar PDFMerger "Quell-PDF-Dateien (2 ..n)" "Ziel-PDF-Datei"


Auch pdfjoin a.pdf b.pdf erstellt eine neue b-joined.pdf mit den Inhalten a.pdf und b.pdf


Hier ist eine Methode, die funktioniert und einfach zu implementieren ist. Dies erfordert sowohl die fpdf als auch die fpdi Bibliotheken, die hier heruntergeladen werden können:

require('fpdf.php');
require('fpdi.php');

$files = ['doc1.pdf', 'doc2.pdf', 'doc3.pdf'];

$pdf = new FPDI();

foreach ($files as $file) {
    $pdf->setSourceFile($file);
    $tpl = $pdf->importPage(1, '/MediaBox');
    $pdf->addPage();
    $pdf->useTemplate($tpl);
}

$pdf->Output('F','merged.pdf');

Ich bin voreingenommen einer der Entwickler von PyMuPDF (eine Python-Bindung von MuPDF).

Sie können damit leicht machen, was Sie wollen (und vieles mehr). Skeleton Code funktioniert so:

#-------------------------------------------------
import fitz         # the binding PyMuPDF
fout = fitz.open()  # new PDF for joined output
flist = ["1.pdf", "2.pdf", ...]  # list of filenames to be joined

for f in flist:
    fin = fitz.open(f)  # open an input file
    fout.insertPDF(fin) # append f
    fin.close()

fout.save("joined.pdf")
#-------------------------------------------------

Das ist alles. Es stehen mehrere Optionen zur Verfügung, um nur Seitenbereiche auszuwählen, ein gemeinsames Inhaltsverzeichnis zu verwalten, die Seitenfolge umzukehren oder die Seitendrehung zu ändern usw.

Wir sind auf PyPi.


Ich unterstütze die pdfunite Empfehlung. Ich bekam jedoch Argument list too long Fehler, als ich versuchte,> 2k PDF-Dateien zusammenzuführen.

Ich wandte mich an Python und zwei externe Pakete: PyPDF2 (um alle Dinge PDF-bezogen zu behandeln) und natsort (um eine "natürliche" Art der Dateinamen des Verzeichnisses zu machen). Falls dies jemandem helfen kann:

from PyPDF2 import PdfFileMerger
import natsort
import os

DIR = "dir-with-pdfs/"
OUTPUT = "output.pdf"

file_list = filter(lambda f: f.endswith('.pdf'), os.listdir(DIR))
file_list = natsort.natsorted(file_list)

# 'strict' used because of
# https://github.com/mstamy2/PyPDF2/issues/244#issuecomment-206952235
merger = PdfFileMerger(strict=False)

for f_name in file_list:
  f = open(os.path.join(DIR, f_name), "rb")
  merger.append(f)

output = open(OUTPUT, "wb")
merger.write(output)

Probieren Sie das gute Ghostscript aus:

gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=merged.pdf mine1.pdf mine2.pdf

oder sogar auf diese Weise für eine verbesserte Version für PDFs mit niedriger Auflösung (Danke an Adriano für den Hinweis darauf):

gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -sOutputFile=merged.pdf mine1.pdf mine2.pdf

In beiden Fällen ist die Ausgangsauflösung viel höher und besser als bei der Konvertierung:

convert -density 300x300 -quality 100 mine1.pdf mine2.pdf merged.pdf

Auf diese Weise müssen Sie nichts anderes installieren, sondern nur mit dem arbeiten, was Sie bereits in Ihrem System installiert haben (zumindest beide sind standardmäßig in meinem Rhel enthalten).

Hoffe das hilft,

UPDATE: erst einmal vielen Dank für all eure netten Kommentare !! nur ein Tipp, der für euch funktionieren könnte, nachdem ich gegoogelt habe, fand ich einen großartigen Trick, um die Größe von PDFs zu verkleinern, ich reduzierte damit ein PDF von 300 MB auf nur 15 MB mit einer akzeptablen Auflösung! und all das mit dem guten Ghostscript, hier ist es:

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/default -dNOPAUSE -dQUIET -dBATCH -dDetectDuplicateImages -dCompressFonts=true -r150 -sOutputFile=output.pdf input.pdf

Prost!!


Sie können den Befehl convert direkt verwenden,

z.B

convert sub1.pdf sub2.pdf sub3.pdf merged.pdf

Verwenden Sie PDF-Tools von Python https://pypi.python.org/pypi/pdftools/1.0.6

Laden Sie die tar.gz-Datei herunter, dekomprimieren Sie sie und führen Sie den folgenden Befehl aus

python pdftools-1.1.0/pdfmerge.py -o output.pdf -d file1.pdf file2.pdf file3 

Sie sollten pyhton3 installieren, bevor Sie den obigen Befehl ausführen

Diese Tools unterstützen das Folgende

  • hinzufügen
  • einfügen
  • Löschen
  • Drehen
  • Teilt
  • Verschmelzen
  • Postleitzahl

Sie können mehr Details im folgenden Link finden und es ist Open Source

https://github.com/MrLeeh/pdftools


Wenn man bedenkt, dass pdfunite ein Teil von poppler ist, hat es eine höhere Wahrscheinlichkeit installiert zu werden, die Verwendung ist auch einfacher als pdftk :

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




command-line-interface