Jak mogę przekonwertować serię obrazów do formatu PDF z wiersza poleceń w systemie Linux? [Zamknięte]

215

Mam serwer skanowania, który napisałem w cgi / bash i chcę móc przekonwertować wiązkę obrazów (wszystkie w jednym folderze) na plik pdf z wiersza poleceń. Jak można to zrobić?

Jakob Weisblat
źródło
Zobacz także Jak wygenerować plik PDF z serii obrazów? na superużytkowniku.
zrajm
7
Użyj img2pdf , a nie ImageMagick. ImageMagick dekoduje JPEG, co powoduje utratę generacji i jest 10–100 razy wolniejszy niż img2pdf.
Robert Fleming,
1
sudo apt-get install gscan2pdf dla prostego i łatwego użycia.
M Haziq,
1
img2pdf $(find . -iname '*.jpg' | sort -V) -o ./document.pdfda ci document.pdfzawierające wszystkie obrazy z rozszerzeniem jpg lub JPG w bieżącym katalogu - jeden obraz na stronie. document.pdfbędą miały wszystkie obrazy uporządkowane naturalnie jako strony ( -Vopcja dla sort), więc nie trzeba dodawać żadnych zer wiodących podczas numerowania plików obrazów.
Jimmix

Odpowiedzi:

411

Korzystając z imagemagick , możesz spróbować:

convert page.png page.pdf

Lub dla wielu zdjęć:

convert page*.png mydoc.pdf
Marvin Pinto
źródło
7
co jeśli strona * .png nie sortuje obrazów w pożądany sposób? np. strona_1.png, strona_2.png ... strona_10.png -> strona_10 pojawi się przed stroną_1
vcarel
38
Aby posortować pliki, możesz użyć:ls page*.png | sort -n | tr '\n' ' ' | sed 's/$/\ mydoc.pdf/' | xargs convert
GaloisPlusPlus
26
Dla ciebie prawie nigdy nie musisz używać lsdo niczego poza wyświetlaniem plików ... tj. Nie analizuj jego danych wyjściowych. findjest znacznie bardziej odpowiednim narzędziem. Oto przykład convert $(find -maxdepth 1 -type f -name 'page*.png' | sort -n | paste -sd\ ) output.pdf. Pamiętaj, że powyższe polecenie nie będzie działać, jeśli twoje ścieżki zawierają spacje. Dodanie znaków, które należy uciec, sprawia, że ​​sprawy stają się nieco bardziej skomplikowane.
Sześć
20
To proste i działa bardzo dobrze, dziękuję! Aby uniknąć generowania ogromnych plików PDF, użyj czegoś takiegoconvert -compress jpeg -quality 85 *.png out.pdf
jlh
13
ImageMagick dekoduje JPEG, co powoduje utratę generacji . Zamiast tego użyj img2pdf ; jest także 10–100 razy szybszy.
Robert Fleming,