Способы конвертации и объединения файлов изображений в PDF-файл?

Способы конвертации и объединения файлов изображений в PDF-файл?

У меня в каталоге около 190 файлов изображений (png и jpg). Для получения дополнительной информации, каждое изображение имеет размер 2500 x 3072 пикселей и вес около 500 КБ.

Я использую команду convertиз ImageMagik, чтобы преобразовать и объединить их в PDF-файл:

convert * my.pdf

Создание PDF-файла размером 80 МБ занимает около 10 ГБ (в пиковом режиме) и 4 часа. Сначала мне не удалось запустить его, потому что у меня не было достаточно свободного места на моем /tmp(на самом деле в моем /разделе). Затем мне пришлось найти внешний жесткий диск с большим количеством свободного места и установить переменную окружения, TMPDIRчтобы она указывала на него, и тогда мне это удалось.

Интересно, есть ли какое-то другое программное обеспечение для конвертации и объединения изображений в файл pdf, кроме convert, чтобы исключить необходимость во внешнем жестком диске? Или типично, что такое преобразование и объединение требуют аналогичного количества временного пространства на диске?

Более подробная информация о файлах изображений, например,

$ 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

решение1

Может быть, это и маловероятно, но я использую pdflatex. Я создаю файл (со скриптом или чем-то еще) в стиле:

\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}

А затем запустите его с помощью pdflatex file. Составление происходит быстро (и вы можете легко --- если вы знаете LaTeX --- изменить форму и положение изображений, добавить подписи и т. д.)

Проблема в том, что файл обычно очень большой; я тестировал с 200 jpg размером 500K+ --- запуск занял около 7 секунд на моем i5/16G RAM и выдал PDF размером 800Mbyte. Я пытаюсь уменьшить его размер с помощью

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

...и он работает уже 8 минут, но не использует много оперативной памяти. Я не могу прокомментировать сжатие, потому что gsон умнее меня и обнаружил, что я использовал одно и то же изображение 200 раз, поэтому сжал его до 50k PDF... что явно нереально.

решение2

К сожалениюconvertизменяет изображение до этого, поэтому для минимальной потери качества оригинала jpgвам нужно использовать img2pdf, я использую эти команды:

Более короткое решение в одну строку, также использующее только img2pdfфункции

  1. Сделать PDF-файл

    img2pdf *.jp* --output combined.pdf

  2. OCR выходного PDF-файла

    ocrmypdf combined.pdf combined_ocr.pdf

Это были исходные команды с дополнительными командами и инструментами:

1) Это позволит создать pdfфайл из каждого jpgизображения без потери разрешения или качества:

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

2) Это для объединения pdfстраниц в одну:

pdftk *.pdf cat output combined.pdf

3) И последнее, я добавляю слой текста с распознанным текстом, который не меняет качество сканирования в PDF-файлах, чтобы их можно было искать:

pypdfocr combined.pdf  

Связанный контент