Como posso converter uma série de imagens em um PDF a partir da linha de comando no linux? [fechadas]

215

Eu tenho um servidor de digitalização que escrevi em cgi / bash e quero converter um monte de imagens (todas em uma pasta) em um pdf a partir da linha de comando. Como isso pode ser feito?

Jakob Weisblat
fonte
Consulte também Como gerar um PDF a partir de uma série de imagens? no superusuário.
Zrajm
7
Use img2pdf , não o ImageMagick. O ImageMagick decodifica o JPEG, resultando em perda de geração e é 10 a 100 vezes mais lento que o img2pdf.
Robert Fleming
1
sudo apt-get install gscan2pdf para uso simples e fácil.
M Haziq
1
img2pdf $(find . -iname '*.jpg' | sort -V) -o ./document.pdffornecerá document.pdftodas as imagens com extensão jpg ou JPG no diretório atual - uma imagem por página. document.pdfterá todas as imagens ordenadas como páginas naturalmente ( -Vopção para sort), para que não seja necessário adicionar zeros à esquerda ao numerar arquivos de imagem.
Jimmix 11/04

Respostas:

411

Usando o imagemagick , você pode tentar:

convert page.png page.pdf

Ou para várias imagens:

convert page*.png mydoc.pdf
Marvin Pinto
fonte
7
what if page * .png não classifica as imagens da maneira que você deseja? por exemplo page_1.png, page_2.png ... page_10.png -> page_10 aparecerá antes PAGE_1
vcarel
38
Para classificar os arquivos, você pode usar:ls page*.png | sort -n | tr '\n' ' ' | sed 's/$/\ mydoc.pdf/' | xargs convert
GaloisPlusPlus
26
Para sua informação, você quase nunca precisa usar lsalgo além de exibir arquivos ... ou seja, não analisa sua saída. findé uma ferramenta muito mais adequada. Aqui está um exemplo convert $(find -maxdepth 1 -type f -name 'page*.png' | sort -n | paste -sd\ ) output.pdf. Lembre-se de que o comando mencionado acima não funcionará se seus nomes de caminho contiverem espaços. A adição de personagens que precisam ser evitados torna as coisas um pouco mais complicadas.
Seis
20
Isso é simples e funciona muito bem, obrigado! Para evitar a geração de grandes arquivos PDF, use algo comoconvert -compress jpeg -quality 85 *.png out.pdf
jlh
13
O ImageMagick decodifica o JPEG, resultando em perda de geração . Use img2pdf ; também é 10 a 100 vezes mais rápido.
Robert Fleming