Konwertuj katalog plików JPEG na pojedynczy dokument PDF

242

Mam wiele plików JPEG w katalogu i chcę je przekonwertować do formatu PDF i połączyć je razem w jeden dokument.

Jak można to zrobić?

Wolałbym używać wiersza poleceń, ponieważ ten proces będzie szybszy.

miłość
źródło

Odpowiedzi:

358

Z imagemagickpakietu użyj convertpolecenia:

convert *.jpg pictures.pdf

Otrzymasz pojedynczy plik pdf zawierający wszystkie pliki jpg w bieżącym folderze.

Zainstaluj komunikator za pomocą:

sudo apt-get install imagemagick

źródło: stackoverflow

Edycja: pamiętaj, że obrazy nie będą miały określonej kolejności, jeśli nie będą ponumerowane. jeśli masz 10 lub więcej, musisz je nazwać kończącym filename01.jpg ... filename99.jpg itp. Zera wiodące są wymagane do poprawnego uporządkowania. Jeśli masz 100 lub więcej 001 ... 999.

róż
źródło
1
Korzystanie z jokera nie działało dla mnie, musiałem użyć rozwiązania @ Alexa.
Euzebiusz
2
@Eusebius, jeśli symbol wieloznaczny nie działa w przypadku konwersji, możesz użyć narzędzia oneliner, takiego jakfor f in *.jpg; do convert "$f" "$f.pdf"; done; pdftk *.pdf cat output final.pdf
Elder Geek
1
GrphicMagickużytkownicy powinni uruchomićgm convert *.jpg pictures.pdf
michaelbn
Być może moje pliki jpg są zbyt duże i liczne, ale prawie natychmiast zużyłem tak dużo pamięci RAM, że mój system 16 GB zaczął się zamieniać.
RonJohn,
8
Zauważ, że ta metoda może teraz powodować not authorizedbłąd; zobacz to powiązane pytanie (i odpowiedzi) .
Jani Uusitalo
31
convert `ls -1v` file.pdf
  • Spowoduje to wyświetlenie jednego pliku na raz w „naturalnym porządku” (1,2,3 ...) i kontynuowanie konwersji.
Alex
źródło
1
Próbowałem tego i nie działało to dla mnie. liczne błędy wskazują, że może to mieć związek ze spacjami w nazwach plików.
Starszy Geek
5
Aby rozwiązać problem spacji, wykonaj najpierw zamianę wzoru: dla ThisFile w * .jpg; do mv "$ ThisFile" "$ {ThisFile // / _}"> / dev / null 2> & 1; d
Simon Mattes
20

Pracowałem dla mnie (ALE ostrzeżenie! Wyłącza kompresję, a wynikowy plik PDF będzie duży!):

convert page1.jpg page2.jpg +compress file.pdf

lub nawet:

convert -rotate 90 page\*.jpg +compress file.pdf

Od ubuntuforums.org, +compresspomaga się nie zawiesić. UWAGA: + kompres wyłącza kompresję. Maszyna, nad którą pracowałem w tym czasie, wydawała się zawieszać „na zawsze” (nie musiałem czekać wiecznie, żeby się dowiedzieć). Bez opcji + kompres. Twój przebieg może się nieco różnić! RTFM na opcji imagemagick.org -compress , może eksperymentuj z -compress <typ>, jeśli masz powolne problemy z kompresją / zawieszaniem, aby dowiedzieć się, co będzie dla ciebie odpowiednie.

gaoithe
źródło
13
NIE używaj +compressopcji z convertpoleceniem jak sugerowano powyżej! W rzeczywistości wyłącza całą kompresję, pozostawiając plik PDF 10 razy większy niż oryginalny JPEG. Po prostu nie określaj opcji kompresji i convertprzejdzie do formatu kompresji wejściowej (JPEG), który w tym przypadku jest najlepszym plikiem opcji pod względem rozmiaru. Źródło: http://www.imagemagick.org/script/command-line-options.php#compress
To nie jest intuicyjne! Dzięki, S Minddal. To działało dla mnie. Zakładam, że wtedy komputer, którego używałem, miał problem z kompresowaniem. Dostosuję odpowiedź.
gaoithe
2
więc $ converet *.jpg file.pdfdziałał dobrze z mniejszym rozmiarem pliku niż z +compressargumentem
doktorat
18

Niestety convertzmienia jakość obrazu przed „spakowaniem” do pliku PDF. Tak więc, aby uzyskać minimalną utratę jakości, lepiej umieścić oryginał jpgw pliku PDF, musisz użyć img2pdf.

Używam tych poleceń:

  1. To polecenie pozwala utworzyć pdfplik z każdego jpgobrazu bez utraty rozdzielczości lub jakości:

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

  2. To polecenie połączy pdfstrony w jeden dokument:

    pdftk * .pdf cat output Combined.pdf

  3. I wreszcie dodaję warstwę tekstową OCRed, która nie zmienia jakości skanu w plikach pdf, aby można je było przeszukiwać:

    pypdfocr łącznie.pdf

    Alternatywa dla używania pypdfocr:

    ocrmypdf Combined.pdf Combined_ocr.pdf

Eduard Florinescu
źródło
1
Świetna metoda! Jedyną wadą bez kompresji byłoby to, że wynikowy rozmiar pliku .pdf będzie bardzo wysoki (to znaczy, że będzie nieco większy niż wszystkie połączone zdjęcia). Ale warto, jeśli konwertowany dokument jest naprawdę ważny!
Gokul NC
1
Działa to dobrze po convertniepowodzeniu przy „próbie wykonania operacji niedozwolonej przez zasady bezpieczeństwa„ PDF ”.
Matthias Braun
12

Otwórz plik jpg lub png w LibreOffice Writer i wyeksportuj jako plik PDF.

Mam nadzieję, że to prosty sposób na eksport pliku pdf.

użytkownik359154
źródło
Tak! LibreOffice to najlepszy sposób na eksport plików graficznych do formatu PDF. Mamy pełną kontrolę nad danymi wyjściowymi PDF, w tym układem strony, zmianą rozmiaru importowanych plików, opcjonalnymi nagłówkami i stopkami i więcej ... Wielkie dzięki dla użytkownika 359154 za sprytną sugestię!
8

Poniższe rozwiązanie również opiera się na ImageMagick, convertale jest nieco bardziej wyrafinowane, ponieważ:

  • Pozwala wszystkim obrazom mieć różne wymiary, przy zachowaniu tego samego rozmiaru strony wyjściowej PDF (A4 w poniższym przykładzie).
  • Centruje obrazy na stronie PDF.
  • Pozwala zagwarantować minimalną przestrzeń między ramkami obrazu a ramkami strony PDF, aby umożliwić drukowanie pliku PDF bez problemów.
  • Nie zmienia danych obrazu. (Tak więc nie ma to wpływu na jakość obrazu, plik PDF ma mniej więcej taki sam rozmiar jak obraz, i możesz później ponownie wyodrębnić oryginalne obrazy pdfimages -j file.pdf img.) W tej chwili działa to tylko z PNG - patrz komentarz @dma_k poniżej .

Instrukcje:

  1. Użyj mojego skryptu z tej odpowiedzi, aby przekonwertować każdy obraz na własny jednostronicowy plik PDF o rozmiarze strony A4 i 5% obramowaniu dookoła.
  2. Połącz wszystkie swoje jednostronicowe pliki PDF z PDFtk w następujący sposób:

    pdftk *.pdf cat output out.pdf
    
Tanius
źródło
2
Komenda ta pokazuje, że (przynajmniej w wersji dostarczonej na Ubuntu 16.04) dane obrazu jest dotknięte:convert some.jpg -format pdf -compress jpeg generated.pdf ; pdfimages -j generated.pdf generated.pdf ; diff -sq some.jpg generated.pdf-000.jpg
Stéphane Gourichon
2
Grałem z GraphicsMagick i zauważyłem, że wykonuje on kompresję obrazu . Jakość wynikowego obrazu JPEG na stronie PDF jest znacznie gorsza. W tej chwili najbezpieczniejszym sposobem jest dodanie obrazów PNG - są one wstawiane poprawnie. Zobacz także ten post .
dma_k
-3

Użyłem http://convert-my-image.com/ Pozytywną rzeczą, którą możesz zapewnić (ta sama strona, ale inna strona) archiwum zdjęć i połączyć je ze wspólnym plikiem pdf

Alen
źródło
3
Ta sugestia ma co najmniej trzy problemy: (1) będzie powolna, ze względu na przesyłanie zdjęć do witryny i pobieranie wynikowego pliku PDF; (2) ujawnia twoje dane każdemu, kto prowadzi tę stronę internetową oraz każdemu, kto mógł naruszyć tę stronę internetową, i każdemu, kto jest w sieci; (3) nie jest to rozwiązanie wiersza polecenia.
sampablokuper,