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?

Jakob Weisblat
quelle
7
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.
Jimmix

Antworten:

411

Mit imagemagick können Sie Folgendes versuchen:

convert page.png page.pdf

Oder für mehrere Bilder:

convert page*.png mydoc.pdf
Marvin Pinto
quelle
7
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