Maneiras de converter e combinar arquivos de imagem em um arquivo PDF?

Maneiras de converter e combinar arquivos de imagem em um arquivo PDF?

Tenho cerca de 190 arquivos de imagem (png e jpg) em um diretório. Para mais informações, cada imagem possui 2.500 x 3.072 pixels e cerca de 500 KB.

Eu uso o comando convertdo ImageMagik para convertê-los e combiná-los em um arquivo pdf:

convert * my.pdf

Demora cerca de 10 GB (no pico) e 4 horas para criar um arquivo PDF de 80 MB. Em primeiro lugar, não consegui executá-lo porque não tenho espaço livre suficiente na minha /tmp(na verdade, na minha /partição). Então tive que encontrar um disco rígido externo com espaço livre abundante e definir a variável de ambiente TMPDIRpara apontar para ele, e então consegui.

Gostaria de saber se existe algum outro software para converter e combinar as imagens em um arquivo pdf além do convert, de forma a eliminar a necessidade de um disco rígido externo? Ou é típico que tal conversão e combinação exijam uma quantidade semelhante de espaço temporário no disco?

Mais informações dos arquivos de imagem, por exemplo,

$ 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

Responder1

Talvez seja um tiro no escuro, mas eu uso pdflatex. Eu crio um arquivo (com um script ou qualquer outro) do 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}

E então execute-o com pdflatex file. A composição é rápida (e você pode facilmente --- se você conhece LaTeX --- alterar a forma e a posição das imagens, adicionar legendas, etc...)

O problema é que o arquivo normalmente é muito grande; Testei com 200 jpg de 500K+ --- a execução demorou cerca de 7 segundos na minha memória RAM i5/16G e gerou um PDF de 800Mbyte. Estou tentando reduzir seu tamanho usando

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

...e está funcionando há 8 minutos, mas não usou muita RAM. Não posso comentar sobre a compactação porque gsé mais inteligente do que eu e descobri que estava usando a mesma imagem 200 vezes, então comprimi a coisa em um PDF de 50k... o que claramente não é real.

Responder2

Infelizmenteconvertaltera a imagem antes para ter a mínima perda de qualidade do original que jpgvocê precisa usar img2pdf, eu uso estes comandos:

Uma solução mais curta de um liner também usando apenas img2pdfrecursos

  1. Criar PDF

    img2pdf *.jp* --output combined.pdf

  2. OCR do PDF de saída

    ocrmypdf combined.pdf combined_ocr.pdf

Estes foram os comandos originais com mais comandos e mais ferramentas necessárias:

1) Isso para criar um pdfarquivo de cada jpgimagem sem perda de resolução ou qualidade:

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

2) Isso para concatenar as pdfpáginas em uma:

pdftk *.pdf cat output combined.pdf

3) E por último adiciono uma camada de texto OCR que não altera a qualidade da digitalização nos PDFs para que possam ser pesquisados:

pypdfocr combined.pdf  

informação relacionada