PDFs in der richtigen Reihenfolge zusammenführen

718
dshepherd

Ich suche nach einer Möglichkeit (vorzugsweise unter Verwendung der Befehlszeile unter Linux), separate PDFs von Buchkapiteln in einer einzigen PDF-Datei des Buches in der richtigen Reihenfolge zusammenzuführen (möglicherweise basierend auf den Seitenzahlen in den PDFs oder auf einigen Heuristiken). .

Ich möchte in der Lage sein, in das Verzeichnis mit allen einzelnen Kapiteln zu gehen und es einfach zu tun

joinpdf-magic-command *.pdf 

und muss das Ausgabe-PDF in der richtigen Reihenfolge sein.

Ich habe viele Werkzeuge zum Zusammenführen von PDFs ( pdfjoin, pdftk) gefunden, aber alle setzen die PDFs in der Reihenfolge, in der sie in der Befehlszeile erscheinen.

bearbeiten:

Eine Beispielliste von Kapiteln könnte sein:

1-Introduction.pdf 2-The-analog-digital-interface.pdf 3-Adaptive-digital-systems.pdf 4-Non-linear-applications.pdf 5-Spectral-analysis-and-modulation.pdf 6-Introduction-to-Kalman-filters.pdf 7-Data-compression.pdf 8-Error-correcting-codes.pdf 9-Digital-signal-processors.pdf Appendix-1-Solutions-to-problems.pdf Appendix-2-A-MATLAB-Simulink-primer.pdf Glossary.pdf Index.pdf Preface.pdf References.pdf 

Bei anderen Büchern gibt es jedoch andere Abschnitte, deren Namen sich möglicherweise unterscheiden, und sogar Abschnitte, die denselben Namen haben, können sogar in eine andere Reihenfolge gehen. Deshalb erwähnte ich, dass die Verwendung der Seitennummern der Schlüssel sein könnte.

2
Bitte geben Sie das Betriebssystem an, wenn Sie spezifischere Hilfe benötigen. Haben Sie versucht, die Dateien mit einem Schritt in der richtigen Reihenfolge umzubenennen? Julian Knight vor 8 Jahren 0
Fragen, die nach Produkt-, Service- oder Lernmaterialempfehlungen suchen, sind unangebracht, da sie schnell veraltet sind und auf Meinungen basierende Antworten finden. Beschreiben Sie stattdessen Ihre Situation und das spezifische Problem, das Sie lösen möchten. Teilen Sie Ihre Forschung mit. LPChip vor 8 Jahren 0
@LPChip Ok Ich habe den Teil über die Suche nach einem Werkzeug entfernt. Ich möchte nur wissen, ob es einen Weg gibt, dies zu tun. dshepherd vor 8 Jahren 0
@JulianKnight Leider habe ich Linux nicht erwähnt, fügte hinzu. Ich könnte die Dateien umbenennen, aber ich möchte das nicht jedes Mal von Hand machen. Ich werde jetzt nach Möglichkeiten suchen, wie Sie die automatische Umbenennung durchführen können. dshepherd vor 8 Jahren 0
ImageMagick `convert` kann so etwas tun, obwohl ich nicht genau weiß, wie es mit Ihrem speziellen Fall umgeht. Probieren Sie es aus: Installieren Sie ImageMagick und konvertieren Sie dann 'chap1.pdf chap2.pdf chap3.pdf book.pdf' a CVn vor 8 Jahren 1
@ MichaelKjörling: OMG, vielleicht möchtest du deinen Kommentar trotz der positiven Bewertung erneut löschen. Mehrseitige PDFs mit `convert 'zu erstellen ist ein Verbrechen! Es ist ein Verbrechen gegen Nüchternheit und gesunden Menschenverstand, da alle netten Vektorelemente aus PDF-Inhalten in ganzseitige Rasterbilder zerhackt werden. Vor allem die Form des Befehls, die Sie gegeben haben - er verwendet die Standardauflösung von 72 DPI, verliert viele, viele und die ursprüngliche Qualität und wirft alle Informationen zur Schriftart, Suchbarkeit und Zugänglichkeit weg. Ich kann nicht einmal ... Kurt Pfeifle vor 8 Jahren 2
@KurtPfeifle Gern geschehen. ;-) (Ernsthaft, deshalb habe ich gesagt * try it * und * ich weiß nicht genau, wie es mit Ihrem speziellen Fall umgeht *.) Dies ist in manchen Fällen eine gültige Herangehensweise, in anderen Fällen ist etwas Handhaltung erforderlich, und wie Sie darauf hinweisen out, eine Katastrophe in anderen.) a CVn vor 8 Jahren 0

2 Antworten auf die Frage

3
Kurt Pfeifle

Es gibt keine Magie, die Sie verwenden können, um die Kapitel Ihres Buches automatisch zu sortieren - nicht, wenn die Dateinamenskonvention dies nicht unterstützt. Dies ist eine Handlung, die von einem Menschen ausgeführt werden muss.

Die einzige Möglichkeit, dies schnell zu tun, besteht darin, die geordneten Dateinamen in eine Textdatei zu schreiben, ähnlich wie Sie es in Ihrem OP zitiert haben.

Dann einfach laufen lassen:

pdftk $(cat mychapters.txt) cat output book.pdf 
2
Julian Knight

Persönlich würde ich nicht nach einem neuen Werkzeug suchen, sondern Ihren Workflow in ein Skript einbinden, um die korrekte Reihenfolge durchzusetzen.

Ich gehe davon aus, dass Sie die richtige Reihenfolge identifizieren können, sonst ist dies überhaupt nicht möglich. Im Idealfall müssten die Dateien so benannt werden, dass sie automatisch in die richtige Reihenfolge fallen:

01ChapterTitleOne.pdf 02ChapterTitleTwo.pdf etc. 

und so weiter. Möglicherweise haben Sie jedoch die Kapitelnummer am Ende (wie in Michaels Beispiel), was die Sortierung aufhebt. In diesem Fall sollten Sie Ihrem Workflow-Skript einen Schritt hinzufügen, in dem die Dateien umbenannt werden, damit sie in die richtige Reihenfolge gebracht werden.

Solange die Dateien konsistent benannt werden, sollte dies kein Problem sein. Wenn Sie weitere Informationen zur Benennung freigeben können, bin ich mir sicher, dass wir dazu ein BASH-Skript erstellen können.

Wenn Sie alles richtig benannt haben, sollten Sie denselben Befehl verwenden können, mit dem Sie als zweiten Schritt des Workflow-Skripts begonnen haben. Wenn dies nicht funktioniert hat, benötigen Sie ein etwas komplexeres BASH-Skript, das die Dateien in der richtigen Reihenfolge durchläuft.

All dies ist Standard für das BASH-Scripting, es dreht sich jedoch alles um die konsistente Benennung der Dateien.

Ich habe die Frage bearbeitet, um ein Beispiel hinzuzufügen. Das Problem bei einem Ansatz wie diesem ist, dass Sie sich oft nicht auf die Dateinamen verlassen können, um die Reihenfolge anzugeben (obwohl Sie möglicherweise mit einem ausreichend komplizierten Skript eine gute Vermutung anstellen können). dshepherd vor 8 Jahren 0
PDFs enthalten jedoch keine strukturierten Daten, daher wäre das Erkennen der Seitenzahlen sehr schwierig, möglicherweise nicht möglich. Es ist einfacher, den Upstream rückwärts zu bearbeiten und Autoren dazu zu bringen, eine Namenskonvention zu übernehmen. Julian Knight vor 8 Jahren 1
Ja sieht so aus :( Na danke trotzdem. dshepherd vor 8 Jahren 0