¿Cómo puedo convertir una serie de imágenes a un PDF desde la línea de comandos en Linux? [cerrado]
215
Tengo un servidor de escaneo que escribí en cgi / bash y quiero poder convertir un montón de imágenes (todas en una carpeta) a un pdf desde la línea de comandos. ¿Cómo se puede hacer eso?
Use img2pdf , no ImageMagick. ImageMagick decodifica el JPEG, lo que resulta en una pérdida de generación y es 10–100 veces más lento que img2pdf.
Robert Fleming
1
sudo apt-get install gscan2pdf Para un uso simple y fácil.
M Haziq
1
img2pdf $(find . -iname '*.jpg' | sort -V) -o ./document.pdfle dará document.pdftodas las imágenes con extensión jpg o JPG en el directorio actual: una imagen por página. document.pdftendrá todas las imágenes ordenadas como páginas de forma natural ( -Vopción para sort), por lo que no es necesario agregar ceros al numerar los archivos de imagen.
¿Qué pasa si la página * .png no ordena las imágenes de la manera que desea? por ejemplo, page_1.png, page_2.png ... page_10.png -> page_10 aparecerá antes de page_1
vcarel
38
Para ordenar los archivos, puede usar:ls page*.png | sort -n | tr '\n' ' ' | sed 's/$/\ mydoc.pdf/' | xargs convert
GaloisPlusPlus
26
Para su información, casi nunca necesita usar lsnada aparte de mostrar archivos ... es decir, no analice su salida. findEs una herramienta mucho más adecuada. Aquí hay un ejemplo convert $(find -maxdepth 1 -type f -name 'page*.png' | sort -n | paste -sd\ ) output.pdf. Tenga en cuenta que el comando antes mencionado no funcionará si sus nombres de ruta contienen espacios. La adición de personajes que deben escaparse hace las cosas un poco más complicadas.
Seis
20
Esto es simple y funciona muy bien, ¡gracias! Para evitar generar grandes archivos PDF, use algo comoconvert -compress jpeg -quality 85 *.png out.pdf
jlh
13
ImageMagick decodifica el JPEG, lo que resulta en una pérdida de generación . Use img2pdf en su lugar; También es 10–100 veces más rápido.
Robert Fleming
13
Uso convertde http://www.imagemagick.org . (Se suministra fácilmente como un paquete en la mayoría de las distribuciones de Linux).
sudo apt-get install gscan2pdf
Para un uso simple y fácil.img2pdf $(find . -iname '*.jpg' | sort -V) -o ./document.pdf
le darádocument.pdf
todas las imágenes con extensión jpg o JPG en el directorio actual: una imagen por página.document.pdf
tendrá todas las imágenes ordenadas como páginas de forma natural (-V
opción parasort
), por lo que no es necesario agregar ceros al numerar los archivos de imagen.Respuestas:
Usando imagemagick , puedes probar:
O para múltiples imágenes:
fuente
ls page*.png | sort -n | tr '\n' ' ' | sed 's/$/\ mydoc.pdf/' | xargs convert
ls
nada aparte de mostrar archivos ... es decir, no analice su salida.find
Es una herramienta mucho más adecuada. Aquí hay un ejemploconvert $(find -maxdepth 1 -type f -name 'page*.png' | sort -n | paste -sd\ ) output.pdf
. Tenga en cuenta que el comando antes mencionado no funcionará si sus nombres de ruta contienen espacios. La adición de personajes que deben escaparse hace las cosas un poco más complicadas.convert -compress jpeg -quality 85 *.png out.pdf
Uso
convert
de http://www.imagemagick.org . (Se suministra fácilmente como un paquete en la mayoría de las distribuciones de Linux).fuente