Konvertieren von Hunderten von JPGs in PDF mithilfe von Terminal


7

Ich weiß, dass der Befehl convert *.jpg myPdf1.pdfmehrere JPEG-Dateien in eine einzige PDF-Datei konvertieren kann.

Ich möchte jedoch mehrere JPEGs in mehrere PDFs konvertieren, zum Beispiel:

myJPG1.jpg → myPDF1.pdf
myJPG2.jpg → myPDF2.pdf
myJPG3.jpg → myPDF3.pdf

Gibt es eine anständige Möglichkeit, so etwas zu verwalten?


Wie würden Sie sie bestellen?
Job

Angenommen, sie heißen myJPG1, myJPG2 usw. und Sie möchten sie in myPDF1, myPDF2 usw. konvertieren.
Majestät

Die Frage ist nicht klar, haben Sie mehrere JPGs oder PDFs? Mit dem Befehl, den Sie in Ihrer Frage verwendet haben, können Sie mehrere JPGs in ein einziges PDF konvertieren.
Job

Es sollte jetzt klarer sein, ich möchte nur ein paar PDFs mit den Namen myPDF1 myPDF2 und so weiter. Ihr Vorschlag in einem einzigen PDF klingt aber auch gut. Vielen Dank.
Majestät

Antworten:


10

Mein erster Instinkt für die Stapelverarbeitung von Dateien ist fast immer find. Es ist ausgezeichnet, wenn Sie irgendeine Art von Filterung einbauen müssen (was Sie hier nicht tun), aber es ist immer noch ein Favorit. Dies wird auch in Unterverzeichnisse zurückgeführt, es sei denn, Sie sagen es (mit -maxdepth 1oder andere):

find -name '*.jpg' -exec convert "{}" "{}.pdf" \;
rename 's/\.jpg\.pdf$/.pdf/' *.jpg.pdf

Die Anweisung find/ convertgibt eine Menge .jpg.pdfDateien aus. Der zweite räumt das auf.


Vielleicht ein etwas eleganterer Ansatz in einem so einfachen Fall:

for file in *.jpg ; do convert "$file" "${file/%jpg/pdf}"; done

Dies wiederholt sich nicht und Sie müssen nicht herumspielen, um die Dateinamen zu bereinigen.


Und ich hätte fast vergessen, dass ImageMagick eine numerische Ausgabe hat, die perfekt zu Ihrem Anwendungsfall passt. Im Folgenden wird nur Stick eine dreistellige Kennung ( 000, 001, 002, usw.) am Ende des „myPDF“:

convert *.jpg myPDF%03d.pdf

Wenn Sie mit mehr als tausend Einträgen zu tun haben, erhöhen Sie natürlich die Anzahl. Wenn Sie nicht möchten, dass es mit Nullen aufgefüllt wird, entfernen Sie die führende Null.


find -name '* .jpg' | parallel 'konvertieren {} {.}. pdf'
Yauhen Yakimovich

1

Leider convertändert sich das Bild vorher, um einen minimalen Qualitätsverlust des Originals zu haben, den jpgSie verwenden müssen img2pdf, wodurch das pdfmit dem Original jpgkeinen Verlust verursacht. Ich verwende diese Befehle:

1) Dies, um pdfaus jedem jpgBild eine Datei ohne Verlust der Auflösung oder Qualität zu erstellen :

ls -1 ./*jpg | xargs -L1 -I {} img2pdf {} -o {}.pdf

2) Hier haben Sie das *.pdfs as *.jpg.pdf, also wird ein wenig umbenannt

mmv "*.jpg.pdf" "#1.pdf"

Sie müssen img2pdf und mmv installiert haben

sudo apt install img2pdf mmv
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.