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ć?
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.
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
sudo apt-get install gscan2pdf
dla prostego i łatwego użycia.img2pdf $(find . -iname '*.jpg' | sort -V) -o ./document.pdf
da cidocument.pdf
zawierające wszystkie obrazy z rozszerzeniem jpg lub JPG w bieżącym katalogu - jeden obraz na stronie.document.pdf
będą miały wszystkie obrazy uporządkowane naturalnie jako strony (-V
opcja dlasort
), więc nie trzeba dodawać żadnych zer wiodących podczas numerowania plików obrazów.Odpowiedzi:
Korzystając z imagemagick , możesz spróbować:
Lub dla wielu zdjęć:
źródło
ls page*.png | sort -n | tr '\n' ' ' | sed 's/$/\ mydoc.pdf/' | xargs convert
ls
do niczego poza wyświetlaniem plików ... tj. Nie analizuj jego danych wyjściowych.find
jest znacznie bardziej odpowiednim narzędziem. Oto przykładconvert $(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.convert -compress jpeg -quality 85 *.png out.pdf
Użyj
convert
z http://www.imagemagick.org . (Łatwo dostarczane jako pakiet w większości dystrybucji Linuksa).źródło