Mac OS X: Zusammenführen von PDF-Dateien in einem Verzeichnis anhand ihrer Dateinamen

30

Ich möchte mehrere hundert PDF-Dateien in einem Verzeichnis automatisch nach ihren Dateinamen zusammenführen.

Z.B

Die Dateien 1000.1.pdf 1000.2.pdf 1000.3.pdf 1000.x.pdf sollten in 1000.pdf zusammengeführt werden

und

2000.abc.pdf 2000.def.pdf 2000.ghi.pdf 2000.jkl.pdf 2000.5.pdf in 2000.pdf .

Ich möchte keine auf Preview / Automator basierenden Lösungen verwenden (falls verfügbar), da das Zusammenführen von PDF-Dateien im Vergleich zu Software von Drittanbietern wie Adobe Acrobat oder PDFpen häufig (abhängig von den Quelldokumenten) zu einer signifikanten Zunahme der Dateigröße führt (siehe z. B. Wodurch erhöht sich die PDF-Dateigröße beim Speichern in der Vorschau? )

Haben Sie Empfehlungen? Vielen Dank!

Lejonet
quelle
Das Kombinieren von PDFs erhöht immer die Dateigröße. Worum geht es genau dabei?
Nohillside
1
@patrix Ich spreche von Hunderten von Dateien, die zusammengeführt werden sollen. Wie oben erwähnt, kann die Dateigröße mit verschiedenen in Mac OS X enthaltenen Werkzeugen erheblich zunehmen. Warum sollte ich eine zusammengeführte Textdatei mit einer manchmal um mehrere hundert Prozent größeren Größe wünschen ?
Lejonet
2
@patrix, lejone8 ​​möchte eine automatische Zusammenführung von PDF-Dateien, aber mit einem Verhältnis von 1 + 1 = 2, nicht mit 1 + 1 = 5? oder mehr in Dateigröße. Darüber hinaus weist lejonet8 klar darauf hin, dass die Verwendung von Apple-Produkten aufgrund ihrer schlechten Leistung im Vergleich zu Produkten von Drittanbietern nicht akzeptabel ist! Ich weiß nicht, warum Sie meine Kommentare löschen, aber so soll es sein.
Ruskes
1
Ich verstehe die Automatisierungsanforderung nicht. Es ist sehr einfach und schnell, Dateien nach Namen zu ordnen (zu sortieren), dann alle in der gewünschten Kategorie auszuwählen und die Zusammenführung mit einem Klick in einem der verfügbaren Programme, wie hier beantwortet, oder in anderen Programmen durchzuführen. Die resultierende Dateigröße hängt vom Typ und Inhalt der PDF-Dateien ab, sodass 1 + 1 = 2 nicht möglich ist. Das lejonet8 scheint auf dem Argument zu liegen, warum Apple-Programme größere PDF-Dateien erstellen als andere. Viel Glück bei der Beantwortung.
Ruskes
2
Können Sie bitte die Frage bearbeiten , um genauer zu beschreiben, was "automatisiert" für Sie bedeutet (es scheint für die Leute, die sich die Zeit genommen haben, um Lösungen für Ihr Problem vorzuschlagen, verschiedene Dinge zu bedeuten)? Was soll das Zusammenführen der Dokumente auslösen? Welche Muster sollten verwendet werden, um passende Dateien zu finden? Insbesondere die Antwort von DW scheint auf den ersten Blick stark automatisiert zu sein, aber vielleicht steckt hinter Ihrer Frage mehr, als wir derzeit wissen.
Nohillside

Antworten:

25

Versuchen Sie es mit pdftk . Es ist eine Kommandozeilen-Software, die PDF-Dateien zusammenfügen kann (und auch viele andere Dinge, aber das ist hier nicht relevant). Sie können es von der offiziellen pdftk-Webseite herunterladen .

Beispielsyntax:

pdftk old1.pdf old2.pdf old3.pdf cat output new.pdf

wird erstellen Sie die Datei new.pdf, die die Verkettung der Dateien enthält old1.pdf, old2.pdf, old3.pdf.

Um Ihr Problem mit Ihren Beispieldateinamen zu lösen:

pdftk 1000.*.pdf cat 1000.pdf
pdftk 2000.*.pdf cat 2000.pdf

und so weiter. Sie können Shell-Skripte verwenden, um dies bei Bedarf vollständig automatisch zu machen (Sie müssen jedoch ein wenig Zeit aufwenden, um zu lernen, wie Sie Shell-Skripte schreiben).


Angenommen, alle Dateien heißen 1000.x, 2000.x usw. Ein Shell-Skript könnte so aussehen

#!/bin/bash

for n in {1..9}; do
    if [[ -r ${n}000.1.pdf ]]; then
        rm -f ${n}000.pdf
        pdftk ${n}000.*.pdf cat ${n}000.pdf && mv ${n}000.*.pdf ~/.Trash/
    fi
done
DW
quelle
Vielen Dank für Ihren Kommentar, aber ich sehe keinen Workflow für meine Anforderungen (Hunderte von Dateien mit ähnlichen Namen, die gemäß diesen Namen zusammengeführt wurden).
Lejonet
1
@lejonet8, genau hier leuchten die Kommandozeilen-Tools! Ich habe meine Antwort bearbeitet, um Ihnen ein Beispiel dafür zu geben. Weitere Details zu erarbeiten, würde wahrscheinlich den Rahmen dieser Frage sprengen und sich eher auf das Schreiben von Shell-Skripten beziehen.
DW
Vielen Dank für Ihre Antwort. Leider lief es auf meinen Akten es ergab diese Fehlermeldung: Störung : Unerwarteter Text im Seitenbereichende, hier: 1000.pdf
lejonet
1
@ lejonet8 Vielleicht könntest du in der Frage etwas mehr auf deine Automatisierungsanforderungen eingehen . Suchen Sie nach Dingen wie "Ordneraktionen" oder ähnlichem? Was würde den Verkettungsprozess überhaupt auslösen?
Nohillside
3
@ lejonet8, Möglicherweise müssen Sie ein wenig experimentieren, um zu sehen, wie pdftk für Sie funktioniert. Eine Fehlermeldung ohne Kontext reicht mir leider nicht aus, um das Problem zu diagnostizieren. Versuchen Sie, einige Dateipaare zu verketten. Experiment. Sehen Sie nach, ob Sie diagnostizieren können, wann pdftk funktioniert / nicht und welche Ursache es hat. Lesen Sie das Tutorial. Stellen Sie dann eine Frage, wie pdftk auf einer geeigneten Stack Exchange-Site oder einer anderen Frage-und-Antwort-Site funktioniert. FWIW, pdftk war für mich sehr zuverlässig und hat mit einer Vielzahl von PDF-Dateien gearbeitet, die von vielen verschiedenen Programmen erstellt wurden. Natürlich kann Ihre Erfahrung variieren.
DW
52

In Automator.app ist ein Python-Skript versteckt , das PDF-Dateien zusammenfügt

/System/Library/Automator/Combine\ PDF\ Pages.action/Contents/Resources/join.py --help
Usage: join [--output <file>] [--shuffle] [--verbose]

Anwendungsbeispiel:

/System/Library/Automator/Combine\ PDF\ Pages.action/Contents/Resources/join.py --output all.pdf *.pdf
akuhn
quelle
2
Vielen Dank für Ihre Antwort. Ich kann den technischen Hintergrund nicht kommentieren (es kann einen Unterschied beim Zusammenführen von Automator und Preview geben). Abhängig von den Quelldateien kann sich auch die Dateigröße erheblich erhöhen. Ich habe es gerade noch einmal getestet und vier Dateien mit einer Größe von insgesamt 12 MB wurden zu einem 32-MB-Dokument zusammengefügt. Das ist inakzeptabel.
Lejonet
Entschuldigung, kann nicht helfen.
Akuhn
4
Ich habe diesen Befehl als Alias ​​in meine ~/.bash_profileDatei eingefügt : alias catpdf="/System/Library/Automator/Combine\ PDF\ Pages.action/Contents/Resources/join.py --output all.pdf *.pdf"So kann ich einfach cdin ein Verzeichnis mit PDFs und ausführen catpdf.
Stewart Macdonald
2
Upvoting für die geniale Verwendung von Python-Skripten, die in einer APP versteckt sind! Ich entschied mich jedoch für pdftk als robustere Lösung.
Blairg23
1
@lejonet Der technische Hintergrund ist, dass beide dieselben Frameworks verwenden (Quartz.CoreGraphics unter 10.11), wie Sie vermutet haben. Dies ist aus den ersten Zeilen des `join.py'-Skripts (Importanweisungen) ersichtlich.
Hans_Meine
8

Sie können pdfuniteverteilt mit verwenden poppler. Sie können popplermit Homebrew installieren :

brew install poppler

Und jetzt benutze es:

pdfunite input1.pdf input2.pdf input3.pdf output.pdf

popplerauch mit diesen anderen Befehlen kommt: pdfdetach, pdffonts, pdfimages, pdfinfo, pdfseparate, pdftocairo, pdftohtml, pdftoppm, pdftops, pdftotext, zusätzlich zu pdfunite.

Flimm
quelle
0

pdftk funktioniert auf El Capitan nicht mehr! (OS X 10.10)

Eine Alternative ist Pagemaster von PDFTron. Die Syntax wäre:

pagemaster -m *.pdf -o output.pdf

Das Problem der Vergrößerung der Dateien der oben genannten Automator-Lösung tritt nicht auf, da eine benutzerdefinierte PDF-Bibliothek verwendet wird.

Hinweis: Dies ist kein kostenloses Tool. Die Demoversion fügt jeder Seite ein dünnes Wasserzeichen hinzu.

Antoine
quelle