¿Formas de convertir y combinar archivos de imagen en un archivo pdf?

¿Formas de convertir y combinar archivos de imagen en un archivo pdf?

Tengo alrededor de 190 archivos de imagen (png y jpg) en un directorio. Para más información, cada imagen tiene 2500 x 3072 píxeles y unos 500 KB.

Utilizo el comando convertde ImageMagik para convertirlos y combinarlos en un archivo pdf:

convert * my.pdf

Se necesitan unos 10 GB (en su punto máximo) y 4 horas para crear un archivo pdf de 80 MB. En primer lugar, no pude ejecutarlo porque no tengo suficiente espacio libre en mi /tmp(en realidad, en mi /partición). Luego tuve que encontrar un disco duro externo con abundante espacio libre y configurar la variable de entorno TMPDIRpara que apuntara a él, y luego lo logré.

Me pregunto si existe algún otro software para convertir y combinar las imágenes en un archivo pdf además convert, para eliminar la necesidad de un disco duro externo. ¿O es típico que dicha conversión y combinación requiera una cantidad similar de espacio temporal del disco?

Más información de los archivos de imagen, por ejemplo,

$ exiftool 1.jpg 
ExifTool Version Number         : 8.60
File Name                       : 1.jpg
Directory                       : .
File Size                       : 453 kB
File Modification Date/Time     : 2014:11:15 13:41:55-05:00
File Permissions                : rwxrwx---
File Type                       : JPEG
MIME Type                       : image/jpeg
JFIF Version                    : 1.01
Resolution Unit                 : None
X Resolution                    : 1
Y Resolution                    : 1
Image Width                     : 2500
Image Height                    : 3072
Encoding Process                : Baseline DCT, Huffman coding
Bits Per Sample                 : 8
Color Components                : 3
Y Cb Cr Sub Sampling            : YCbCr4:2:0 (2 2)
Image Size                      : 2500x3072

$ exiftool 2.png 
ExifTool Version Number         : 8.60
File Name                       : 2.png
Directory                       : .
File Size                       : 310 kB
File Modification Date/Time     : 2014:11:15 13:50:58-05:00
File Permissions                : rwxrwx---
File Type                       : PNG
MIME Type                       : image/png
Image Width                     : 2500
Image Height                    : 3072
Bit Depth                       : 8
Color Type                      : Grayscale
Compression                     : Deflate/Inflate
Filter                          : Adaptive
Interlace                       : Noninterlaced
Pixels Per Unit X               : 11929
Pixels Per Unit Y               : 11929
Pixel Units                     : Meters
Image Size                      : 2500x3072

Respuesta1

Tal vez sea una posibilidad remota, pero lo uso pdflatex. Creo un archivo (con script o lo que sea) del estilo:

\documentclass{report}
\usepackage{graphicx}
\begin{document}
\includegraphics[width=0.95\textwidth]{img000}\par
\includegraphics[width=0.95\textwidth]{img001}\par

[...]

\includegraphics[width=0.95\textwidth]{img200}\par
\end{document}

Y luego ejecútelo con pdflatex file. La composición es rápida (y puedes fácilmente, si conoces LaTeX, cambiar la forma y la posición de las imágenes, agregar títulos, etc.)

El problema es que el archivo normalmente es muy grande; Probé con 200 jpg de 500K+. La ejecución tomó alrededor de 7 segundos en mi ram i5/16G y arrojó un PDF de 800Mbytes. Estoy tratando de reducir su tamaño usando

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=lowres.pdf file.pdf 

...y ha estado funcionando durante 8 minutos, pero no ha utilizado mucha RAM. No puedo comentar sobre la compresión porque gses más inteligente que yo y descubrió que estaba usando la misma imagen 200 veces, así que la comprimí en un PDF de 50k... lo cual claramente no es real.

Respuesta2

Desafortunadamenteconvertcambia la imagen antes para tener una pérdida mínima de calidad del original jpgque necesita usar img2pdf, yo uso estos comandos:

Una solución de una sola línea más corta que también utiliza solo img2pdffunciones

  1. Hacer PDF

    img2pdf *.jp* --output combined.pdf

  2. OCR el PDF de salida

    ocrmypdf combined.pdf combined_ocr.pdf

Estos fueron los comandos originales con más comandos y más herramientas necesarias:

1) Esto para crear un pdfarchivo con cada jpgimagen sin pérdida de resolución ni calidad:

ls -1 ./*jpg | xargs -L1 -I {} img2pdf {} -o {}.pdf

2) Esto para concatenar las pdfpáginas en una sola:

pdftk *.pdf cat output combined.pdf

3) Y por último agrego una capa de texto con OCR que no cambia la calidad del escaneo en los archivos PDF para que se puedan buscar:

pypdfocr combined.pdf  

información relacionada