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.mogrify
es mucho menos mecanografía. Mira mi respuesta.Puedes usar el
mogrify
comando 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
mogrify
lugar deconvert
. Esto funcionará para 100 archivos, pero el uso de globbing con*.jpg
no escala a miles de archivos; eso se puede hacer combinando el comando en una línea simple confind
.*.jpg
y*.png
archivos 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 img2pdf
siempre que tenga dependencias (por ejemplo,apt-get install python python-pil python-setuptools libjpeg-dev
oyum 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,convert
falla aquí,img2pdf
pasa 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.img2pdf
está disponible en los repositorios regulares de Ubuntu 16.04, no es necesario realizar operaciones manualespip
allí, 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-iname
cuál es la versión sin distinción entre mayúsculas y minúsculas ,-name
por lo que funcionará.JPG
tan bien como.jpg
.Esto se usa
find
para obtener la lista de archivos en lugar de la aplicación de shell con el*.jpg
comodí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,
find
manejará subdirectorios, mientras que el bloqueo de shell no lo hará a menos que tenga características específicas de shell como la**/*jpg
sintaxis de bloqueo recurrente en zsh.EDITAR: pensé que agregaría otra característica útil
find
que 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
touch
crear un archivo de marca de tiempo después de que finalice la conversión.Luego agregue
-newer timestamp
a lafind
expresió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
find
siempre que sea posible ... tiene una expresividad versátil a la vez que es conciso.fuente
Puedes hacer esto
convert
directamente. 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.pdf
para un pdf combinadoHe usado el siguiente archivo MAKE para algo similar:
Ahora solo puedo ejecutar
make
y obtengo archivos png para cada archivo svg que se encuentra.Editar
De acuerdo a lo pedido:
origs/foo.svg
conviertefoo.png
)all: $(PNG)
define que el objetivo "todos" depende de todos los PNG%.png: origs/%.svg
define, el archivo $ X.png depende de origs / $ X.svg y puede generarse llamandoconvert ... $< $@
.$<
es la dependencia yy$@
es el nombre objetivofuente
make
volver a escribirlos se reconvertirán aquellos y solo aquellos PDF que han cambiado.make
parece un poco demasiado complicado cuando un simple trazador de líneas hará el truco.find
para 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
find
para ejecutar el script:Tenga en cuenta que tanto
script.ksh
elfind
comando como el que le di pueden tener diferentes sintaxis que afectan el sistema operativo y el shell que está utilizando.fuente
pdfname=${1%.*}.pdf
reemplaza 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
SIPS
Bajo MacOS (Sierra), la utilidad de línea de comandos incorporada de Applesips
proporciona acceso completo a todas las utilidades de imágenes ráster de Apple; esto resulta incluir la conversión dejpg
apdf
.Por ejemplo, a partir de una baja resolución / tamaño pequeño existente
jpg
imagen'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
PSD
formato de imagen ráster de Adobe Unasips
expresión similar crea*.psd
archivos 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
psd
rá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
ImageMagick
utilidades para crear archivos de imágenes ráster puras enpng
formato (con todos los metadatos y perfiles de color despojado de salida), a continuación, utilizarsips
para restaurar un conjunto uniforme de los perfiles y / o comentarios de color, y utilizansips
también para generar archivos de salida finales (más comúnmente*.png
,*.psd
o*.pdf
archivos).fuente
Desafortunadamente,
convert
cambia la imagen antes para que tenga una pérdida mínima de calidad del originaljpg
que necesita usarimg2pdf
, utilizo estos comandos:1) Esto para hacer un
pdf
archivo de cadajpg
imagen sin pérdida de resolución o calidad:2) Esto para concatenar las
pdf
pá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