Chcę przekonwertować niektóre pliki z formatu JPEG na format pdf. Korzystam z następującego polecenia.
$ convert image1.jpg image1.pdf
Ale mam 100 zdjęć. Jak przekonwertować je wszystkie na odpowiednie pliki PDF?
próbowałem
$ convert image*.jpg image*.pdf
To nie działa
command-line
wildcards
conversion
imagemagick
Pratik Deoghare
źródło
źródło
Odpowiedzi:
W bash:
źródło
-
problemów, w przeciwnym razie.mogrify
jest o wiele mniej pisania. Zobacz moją odpowiedź.Możesz w tym celu użyć
mogrify
polecenia. Zwykle modyfikuje pliki w miejscu, ale podczas konwersji formatów zapisuje nowy plik (po prostu zmieniając rozszerzenie, aby pasowało do nowego formatu). A zatem:(Podobnie jak enzotib
./*.jpg
,--
zapobiega interpretowaniu jakichkolwiek dziwnych nazw plików jako przełączników. Większość poleceń--
oznacza „przestań szukać opcji w tym momencie”).źródło
mogrify
zamiastconvert
. Działa*.jpg
to dla 100 plików, ale użycie globowania z nie powoduje skalowania do tysięcy plików; można to zrobić, łącząc polecenie w prosty, liniowy zfind
.*.jpg
i*.png
pliki na jeden*.pdf
? Zauważ, że są to pliki ponumerowane (np.1.jpg 2.png 3.png 4.jpg
) I że kolejność powinna być zachowana / zachowana w pliku pdf.*.jpg
„s w*.png
” s w jednym kroku, a wykonując równowartość odpowiedź w kroku 2 ...szybsza, ale nietypowa składnia:
Działa równolegle (przy użyciu https://www.gnu.org/software/parallel/ ). Nie zauważyłem jeszcze żadnego wielowątkowości
convert
, co ograniczyłoby efektywną równoległość. Jeśli to twoja sprawa, zobacz w komentarzu poniżej metodę, która zapewni, że nie wystąpi wielowątkowość.źródło
parallel
), ustawiając zmienną środowiskowąMAGICK_THREAD_LIMIT=1
.https://gitlab.mister-muffin.de/josch/img2pdf
We wszystkich proponowanych rozwiązaniach dotyczących ImageMagick dane JPEG są w pełni dekodowane i ponownie kodowane. Powoduje to utratę generacji , a także wydajność „dziesięć do stu” razy gorszą niż
img2pdf
.Można go zainstalować
pip img2pdf
pod warunkiem, że masz zależności (np.apt-get install python python-pil python-setuptools libjpeg-dev
Lubyum install python python-pillow python-setuptools
).źródło
convert some.jpg -format pdf -compress jpeg generated.pdf ; pdfimages -j generated.pdf generated.pdf ; diff -sq some.jpg generated.pdf-000.jpg
. IMHO ta odpowiedź zasługuje na więcej pochwał. Rzeczywiście,convert
tutaj się nie udaje,img2pdf
przechodzi taki test, a nawet zawiera wiele opcji, aby ustawić rozmiar obrazu, rozmiar strony itp., Aby dopracować wygenerowany plik PDF do twoich potrzeb.img2pdf
jest dostępny w regularnych repozytoriach Ubuntu 16.04, nie ma potrzeby ręcznych operacjipip
, a Ty nadal korzystasz z aktualizacji.Oto sposób, który łączy najlepsze z powyższych sugestii w prosty, wydajny i niezawodny wiersz poleceń:
Działa dobrze z nazwami plików, które zaczynają się od
-
lub zawierają spacje. Zauważ, że użycie-iname
jest w wersji bez rozróżniania wielkości liter,-name
więc będzie działać.JPG
równie dobrze.jpg
.find
Służy to do pobierania listy plików zamiast globowania powłoki za pomocą znaku*.jpg
wieloznacznego, co może powodować błąd „zbyt długiej listy argumentów” w niektórych systemach. Chociaż @enzotib wskazuje w komentarzu, zachowanie przy użyciu globowania w pętli for jest inne niż w przypadku argumentów polecenia .Również
find
zajmie podkatalogów, natomiast powłoka masek nie będzie, chyba że zdarzy się, że funkcje specyficzne dla powłoki takie jak**/*jpg
rekurencyjnego globowania składni w zsh.EDYCJA: Pomyślałem, że dodam kolejną przydatną funkcję, o
find
której pomyślałem po przeczytaniu komentarza @IlmariKaronen na temat ponownego uruchomienia polecenia i konwertowania tylko plików, które zmieniły się od pierwszego uruchomienia.Przy pierwszym przejściu możesz
touch
zapisać plik znacznika czasu po zakończeniu konwersji.Następnie dodaj
-newer timestamp
dofind
wyrażenia, aby działało na podzbiorze plików, których czas ostatniej modyfikacji jest nowszy niż plik znacznika czasu. Kontynuuj aktualizowanie pliku sygnatury czasowej po każdym uruchomieniu.Jest to łatwy sposób na uniknięcie konieczności korzystania z pliku Makefile (chyba że już go używasz) i jest to kolejny dobry powód, dla którego warto go używać,
find
gdy tylko jest to możliwe ... ma wszechstronną ekspresję przy zachowaniu zwięzłości.źródło
Możesz to zrobić
convert
bezpośrednio. Można to znaleźć na dole strony ImageMagicks o przetwarzaniu wiersza poleceń .źródło
convert *.jpg -adjoin output.pdf
w połączeniu pdfUżyłem następującego makefile do czegoś podobnego:
Teraz mogę po prostu uruchomić
make
i dostaję pliki png dla każdego pliku svg, który jest w pobliżu.Edytować
Zgodnie z prośbą:
origs/foo.svg
staje sięfoo.png
)all: $(PNG)
określa, że cel „wszystko” zależy od wszystkich plików PNG%.png: origs/%.svg
określa, że plik $ X.png zależy od origs / $ X.svg i może być wygenerowany przez wywołanieconvert ... $< $@
.$<
jest zależnością i$@
to nazwa celuźródło
make
ponowne wpisanie spowoduje konwersję tych i tylko tych plików PDF, które uległy zmianie.make
wydaje się nieco skomplikowane, gdy załatwi go zwykły liniowiec .find
abyś nie musiał uciekać się do pliku Makefile.Mały skrypt dałby radę. (testowany z ksh88 na Solarisie 10)
script.ksh
Następnie możesz uruchomić,
find
aby wykonać skrypt:Zauważ, że zarówno polecenie , jak
script.ksh
ifind
polecenie, które ci podałem, mogą mieć różne składnie zależne od systemu operacyjnego i używanej powłoki.źródło
pdfname=${1%.*}.pdf
zastępuje rozszerzenie pliku napdf
. Ta metoda jest o wiele prostsza i działa, nawet jeśli nazwa pliku zawiera znaki specjalne. W powiązanej notatce dodaj podwójne cudzysłowy wokół podstawień zmiennych.Narzędzie MacOS
SIPS
W systemie MacOS (Sierra) wbudowane narzędzie Apple z wiersza poleceniasips
zapewnia kompleksowy dostęp do wszystkich narzędzi Apple do obrazów rastrowych; okazuje się, że obejmuje konwersjęjpg
dopdf
.Na przykład z istniejącego
jpg
obrazu o niskiej rozdzielczości / małym rozmiarze'cat.jpg'
(o rozmiarze 8401 bajtów) tworzy się następujący wiersz polecenia'cat.pdf'
, bez zmiany rozdzielczości rastrowej i minimalnego rozszerzenia rozmiaru pliku:Konwersja do
PSD
formatu obrazu rastrowego Adobe Podobnysips
idiom tworzy*.psd
pliki kompatybilne z AdobeZwróć jednak uwagę na 30-krotne rozszerzenie rozmiaru pliku związane z użyciem formatu
psd
rastrowego Adope .Produkcja książek Przy produkcji książek na dużą skalę, obejmujących setki obrazów, które są dostarczane w wielu formatach, dla mnie wygodnym idiomem wiersza poleceń są
ImageMagick
narzędzia do tworzenia czystych plików obrazów rastrowych wpng
formacie (ze wszystkimi metadanymi i kolor profili pozbawiony-out), a następnie użyćsips
do przywrócenia jednolitego zestawu profili barwnych i / lub komentarze i używaćsips
również do generowania ostatecznych plików wyjściowych (najczęściej*.png
,*.psd
lub*.pdf
pliki).źródło
Niestety
convert
zmienia obraz wcześniej, aby mieć minimalną utratę jakości oryginału,jpg
którego potrzebujeszimg2pdf
, używam tych poleceń:1) Aby utworzyć
pdf
plik z każdegojpg
obrazu bez utraty rozdzielczości lub jakości:2) Aby połączyć
pdf
strony w jedną:3) Na koniec dodaję warstwę tekstową OCRed, która nie zmienia jakości skanu w plikach pdf, dzięki czemu można je przeszukiwać:
źródło
Rozwiązano problem z imagemagick do konwersji i równolegle, aby przyspieszyć proces konwersji:
źródło
Jednym z najprostszych sposobów konwersji wielu plików jest przejście do katalogu plików w terminalu Linux i wpisanie:
źródło
Jeśli używasz tylko plików graficznych, być może chcesz użyć Comic Book Archive (.cbr, .cbz, .cbt, .cba, .cb7)
Jest to o wiele bardziej elastyczne niż PDF.
https://secure.wikimedia.org/wikipedia/en/wiki/Comic_book_archive
źródło