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?
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.
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
13
Use a convertpartir de http://www.imagemagick.org . (Prontamente fornecido como um pacote na maioria das distribuições Linux.)
sudo apt-get install gscan2pdf
para uso simples e fácil.img2pdf $(find . -iname '*.jpg' | sort -V) -o ./document.pdf
fornecerádocument.pdf
todas as imagens com extensão jpg ou JPG no diretório atual - uma imagem por página.document.pdf
terá todas as imagens ordenadas como páginas naturalmente (-V
opção parasort
), para que não seja necessário adicionar zeros à esquerda ao numerar arquivos de imagem.Respostas:
Usando o imagemagick , você pode tentar:
Ou para várias imagens:
fonte
ls page*.png | sort -n | tr '\n' ' ' | sed 's/$/\ mydoc.pdf/' | xargs convert
ls
algo além de exibir arquivos ... ou seja, não analisa sua saída.find
é uma ferramenta muito mais adequada. Aqui está um exemploconvert $(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.convert -compress jpeg -quality 85 *.png out.pdf
Use a
convert
partir de http://www.imagemagick.org . (Prontamente fornecido como um pacote na maioria das distribuições Linux.)fonte