Wie kann ich eine Reihe von Bildern über die Befehlszeile unter Linux in eine PDF-Datei konvertieren? [geschlossen]
215
Ich habe einen Scan-Server, den ich in cgi / bash geschrieben habe, und möchte in der Lage sein, eine Reihe von Bildern (alle in einem Ordner) über die Befehlszeile in ein PDF zu konvertieren. Wie kann das gemacht werden?
Verwenden Sie img2pdf , nicht ImageMagick. ImageMagick dekodiert das JPEG, was zu einem Generationsverlust führt und 10- bis 100-mal langsamer als img2pdf ist.
Robert Fleming
1
sudo apt-get install gscan2pdf für einfache und einfache Verwendung.
M Haziq
1
img2pdf $(find . -iname '*.jpg' | sort -V) -o ./document.pdfSie erhalten document.pdfalle Bilder mit der Erweiterung jpg oder JPG im aktuellen Verzeichnis - ein Bild pro Seite. document.pdfAlle Bilder werden natürlich als Seiten sortiert ( -VOption für sort), sodass beim Nummerieren von Bilddateien keine führenden Nullen hinzugefügt werden müssen.
Was ist, wenn Seite * .png die Bilder nicht wie gewünscht sortiert? zB page_1.png, page_2.png ... page_10.png -> page_10 erscheint vor page_1
vcarel
38
Um die Dateien zu sortieren, können Sie verwenden:ls page*.png | sort -n | tr '\n' ' ' | sed 's/$/\ mydoc.pdf/' | xargs convert
GaloisPlusPlus
26
Zu Ihrer Information, Sie müssen fast nie lsetwas anderes als das Anzeigen von Dateien verwenden ... dh die Ausgabe nicht analysieren. findist ein viel geeigneteres Werkzeug. Hier ist ein Beispiel convert $(find -maxdepth 1 -type f -name 'page*.png' | sort -n | paste -sd\ ) output.pdf. Beachten Sie, dass der oben genannte Befehl nicht funktioniert, wenn Ihre Pfadnamen Leerzeichen enthalten. Das Hinzufügen von Zeichen, die maskiert werden müssen, macht die Dinge etwas komplizierter.
Sechs
20
Das ist einfach und funktioniert sehr gut, danke! Um zu vermeiden, dass große PDF-Dateien generiert werden, verwenden Sie so etwas wieconvert -compress jpeg -quality 85 *.png out.pdf
18.
13
ImageMagick dekodiert das JPEG, was zu einem Generationsverlust führt . Verwenden Sie stattdessen img2pdf . Es ist auch 10 bis 100 Mal schneller.
Robert Fleming
13
Verwendung convertvon http://www.imagemagick.org . (In den meisten Linux-Distributionen als Paket verfügbar.)
sudo apt-get install gscan2pdf
für einfache und einfache Verwendung.img2pdf $(find . -iname '*.jpg' | sort -V) -o ./document.pdf
Sie erhaltendocument.pdf
alle Bilder mit der Erweiterung jpg oder JPG im aktuellen Verzeichnis - ein Bild pro Seite.document.pdf
Alle Bilder werden natürlich als Seiten sortiert (-V
Option fürsort
), sodass beim Nummerieren von Bilddateien keine führenden Nullen hinzugefügt werden müssen.Antworten:
Mit imagemagick können Sie Folgendes versuchen:
Oder für mehrere Bilder:
quelle
ls page*.png | sort -n | tr '\n' ' ' | sed 's/$/\ mydoc.pdf/' | xargs convert
ls
etwas anderes als das Anzeigen von Dateien verwenden ... dh die Ausgabe nicht analysieren.find
ist ein viel geeigneteres Werkzeug. Hier ist ein Beispielconvert $(find -maxdepth 1 -type f -name 'page*.png' | sort -n | paste -sd\ ) output.pdf
. Beachten Sie, dass der oben genannte Befehl nicht funktioniert, wenn Ihre Pfadnamen Leerzeichen enthalten. Das Hinzufügen von Zeichen, die maskiert werden müssen, macht die Dinge etwas komplizierter.convert -compress jpeg -quality 85 *.png out.pdf
Verwendung
convert
von http://www.imagemagick.org . (In den meisten Linux-Distributionen als Paket verfügbar.)quelle