Quiero convertir algunos archivos de JPEG a PDF. Estoy usando el siguiente comando.
$ convert image1.jpg image1.pdf
Pero tengo 100 imágenes. ¿Cómo debo convertirlos a los archivos PDF correspondientes?
Lo intenté
$ convert image*.jpg image*.pdf
No funciona
command-line
wildcards
conversion
imagemagick
Pratik Deoghare
fuente
fuente

Respuestas:
En bash:
fuente
-da problemas, de lo contrario.mogrifyes mucho menos mecanografía. Mira mi respuesta.Puedes usar el
mogrifycomando para esto. Normalmente, modifica los archivos en el lugar, pero al convertir formatos, escribe un nuevo archivo (simplemente cambiando la extensión para que coincida con el nuevo formato). Así:(Al igual que enzotib
./*.jpg,--evita que los nombres de archivos extraños se interpreten como interruptores. La mayoría de los comandos reconocen--que significa "dejar de buscar opciones en este punto").fuente
mogrifylugar deconvert. Esto funcionará para 100 archivos, pero el uso de globbing con*.jpgno escala a miles de archivos; eso se puede hacer combinando el comando en una línea simple confind.*.jpgy*.pngarchivos en una sola*.pdf? Tenga en cuenta que son archivos numerados (p. Ej.1.jpg 2.png 3.png 4.jpg) Y que el orden debe mantenerse / conservarse en la salida del pdf.*.jpg's en*.png' s en el paso uno, y realizar el equivalente de su respuesta en el paso 2 ...sintaxis más rápida pero inusual:
Se ejecuta en paralelo (usando https://www.gnu.org/software/parallel/ ). Todavía no he notado ningún subproceso múltiple
convert, lo que limitaría la paralelización efectiva. Si esa es su preocupación, vea en el comentario a continuación un método para asegurarse de que no ocurra subprocesamiento múltiple.fuente
parallel) configurando la variable de entornoMAGICK_THREAD_LIMIT=1.https://gitlab.mister-muffin.de/josch/img2pdf
En todas las soluciones propuestas que involucran a ImageMagick, los datos JPEG se decodifican y se vuelven a codificar. Esto da como resultado una pérdida de generación , así como un rendimiento "diez a cien" veces peor que
img2pdf.Se puede instalar
pip img2pdfsiempre que tenga dependencias (por ejemplo,apt-get install python python-pil python-setuptools libjpeg-devoyum install python python-pillow python-setuptools).fuente
convert some.jpg -format pdf -compress jpeg generated.pdf ; pdfimages -j generated.pdf generated.pdf ; diff -sq some.jpg generated.pdf-000.jpg. En mi humilde opinión, esta respuesta merece más votos a favor. De hecho,convertfalla aquí,img2pdfpasa dicha prueba e incluso incluye muchas opciones para establecer el tamaño de la imagen, el tamaño de la página, etc. para ajustar el pdf generado a sus necesidades.img2pdfestá disponible en los repositorios regulares de Ubuntu 16.04, no es necesario realizar operaciones manualespipallí, y mantiene el beneficio de las actualizaciones.Aquí hay una manera que combina las mejores sugerencias anteriores en una línea de comando simple, eficiente y robusta:
Funciona bien con nombres de archivo que comienzan con
-o contienen espacios. Tenga en cuenta el uso de-inamecuál es la versión sin distinción entre mayúsculas y minúsculas ,-namepor lo que funcionará.JPGtan bien como.jpg.Esto se usa
findpara obtener la lista de archivos en lugar de la aplicación de shell con el*.jpgcomodín, lo que puede dar como resultado un error de "Lista de argumentos demasiado larga" en algunos sistemas. Aunque como @enzotib señala en un comentario, el comportamiento de usar globbing en un bucle for es diferente al de los argumentos de un comando .Además,
findmanejará subdirectorios, mientras que el bloqueo de shell no lo hará a menos que tenga características específicas de shell como la**/*jpgsintaxis de bloqueo recurrente en zsh.EDITAR: pensé que agregaría otra característica útil
findque pensé después de leer un comentario de @IlmariKaronen sobre volver a ejecutar el comando y solo convertir archivos que han cambiado desde la primera ejecución.En la primera pasada, puede
touchcrear un archivo de marca de tiempo después de que finalice la conversión.Luego agregue
-newer timestampa lafindexpresión para operar en el subconjunto de archivos cuya hora de última modificación es más nueva que el archivo de marca de tiempo. Continúe actualizando el archivo de marca de tiempo después de cada ejecución.Esta es una manera fácil de evitar tener que recurrir a un Makefile (a menos que ya esté usando uno) y es otra buena razón por la que vale la pena usarlo
findsiempre que sea posible ... tiene una expresividad versátil a la vez que es conciso.fuente
Puedes hacer esto
convertdirectamente. Esto se encuentra en la parte inferior del sitio de ImageMagicks sobre el procesamiento de la línea de comandos .fuente
convert *.jpg -adjoin output.pdfpara un pdf combinadoHe usado el siguiente archivo MAKE para algo similar:
Ahora solo puedo ejecutar
makey obtengo archivos png para cada archivo svg que se encuentra.Editar
De acuerdo a lo pedido:
origs/foo.svgconviertefoo.png)all: $(PNG)define que el objetivo "todos" depende de todos los PNG%.png: origs/%.svgdefine, el archivo $ X.png depende de origs / $ X.svg y puede generarse llamandoconvert ... $< $@.$<es la dependencia yy$@es el nombre objetivofuente
makevolver a escribirlos se reconvertirán aquellos y solo aquellos PDF que han cambiado.makeparece un poco demasiado complicado cuando un simple trazador de líneas hará el truco.findpara que no tenga que recurrir a un Makefile.Un pequeño guión haría el truco. (probado con ksh88 en Solaris 10)
script.ksh
Luego puede ejecutar
findpara ejecutar el script:Tenga en cuenta que tanto
script.kshelfindcomando como el que le di pueden tener diferentes sintaxis que afectan el sistema operativo y el shell que está utilizando.fuente
pdfname=${1%.*}.pdfreemplaza la extensión del archivo conpdf. Ese método es mucho más simple y funciona incluso si el nombre del archivo contiene caracteres especiales. En una nota relacionada, agregue comillas dobles alrededor de sustituciones variables.La utilidad MacOS
SIPSBajo MacOS (Sierra), la utilidad de línea de comandos incorporada de Applesipsproporciona acceso completo a todas las utilidades de imágenes ráster de Apple; esto resulta incluir la conversión dejpgapdf.Por ejemplo, a partir de una baja resolución / tamaño pequeño existente
jpgimagen'cat.jpg'(tamaño de 8401 bytes), la siguiente línea de comandos crea'cat.pdf', sin cambios en la trama resolución y mínima expansión de tamaño de archivo:Conversión al
PSDformato de imagen ráster de Adobe Unasipsexpresión similar crea*.psdarchivos compatibles con AdobeSin embargo, tenga en cuenta la expansión de tamaño de archivo de 30 veces que acompaña el uso del formato
psdráster de Adope .Producción de libros Al hacer una producción de libros a gran escala, que involucra cientos de imágenes, que se suministran en múltiples formatos, para mí un lenguaje de línea de comandos conveniente ha sido utilizar
ImageMagickutilidades para crear archivos de imágenes ráster puras enpngformato (con todos los metadatos y perfiles de color despojado de salida), a continuación, utilizarsipspara restaurar un conjunto uniforme de los perfiles y / o comentarios de color, y utilizansipstambién para generar archivos de salida finales (más comúnmente*.png,*.psdo*.pdfarchivos).fuente
Desafortunadamente,
convertcambia la imagen antes para que tenga una pérdida mínima de calidad del originaljpgque necesita usarimg2pdf, utilizo estos comandos:1) Esto para hacer un
pdfarchivo de cadajpgimagen sin pérdida de resolución o calidad:2) Esto para concatenar las
pdfpáginas en una:3) Y por último agrego una capa de texto OCRed que no cambia la calidad del escaneo en los archivos PDF para que puedan buscarse:
fuente
Me resolví con imagemagick para conversión y en paralelo para acelerar mi proceso de conversión:
fuente
Una de las formas más simples de convertir varios archivos es ir al directorio de archivos en la terminal de Linux y escribir:
fuente
Si usa solo archivos de imagen, tal vez le gustaría usar Comic Book Archive (.cbr, .cbz, .cbt, .cba, .cb7)
Esto es mucho más flexible que PDF.
https://secure.wikimedia.org/wikipedia/en/wiki/Comic_book_archive
fuente