пятница, 29 января 2010 г.

Преобразование JPG в PDF. Подготавливаем документы для резюме.

В своё время у меня возникла необходимость выслать мои атестаты вместе с резюме в электронном виде. Существует квази стандартный формат файлов для высалки таких документов - pdf. Я решил, что сканировать все атестаты нужно в наилучшем качестве доступном сканеру, а уже потом можно делать с полученными сканами всё, что угодно, в том числе и уменьшать разрешение. Т.о. я получил несколько JPEG-файлов довольно большого размера (где то 4 Мб на одну страничку). Теперь мне было необходимо всего лишь:
  • уменьшить размер файлов, что бы не отсылать десятки Мб по почте;
  • преобразовать JPEG в PDF;
  • ну и сшить отдельные страницы, принадлежащие одному атетату вместе.
Поискав в интернете, я обнаружил необходимые для этого команды. В этой статье я и расскажу о них.
Итак для начала я уменьшил размер JPEG файлов. Для этого я, во-первых, изменил разрешение файла и, во-вторых сделал его чёрно белым. Для изменения разрешения была использована программа convert, входящая в пакет ImageMagick. Пакет ImageMagick можно установить через Synaptic. После установки пакета набираем в терминале:
convert -resize 25% IMG_0001.jpg IMG_0001_small.jpg

Получаем новый JPEG файл меньшего размера. Так, например, для одого файла размером 3,7 МБ получилась уменьшенная копия размером 518,9 КБ. Теперь делаем из цветного чёрно белый:
mogrify -type Grayscale IMG_0001_small.jpg
Размер файла уменьшается ещё чуть чуть. Так в моём примере он стал 424,7 КБ.
Обращаю ваше внимание, что имена файлов не должны содержать пробелы, т.к. пробелы используются как разделители параметров в командной строке. И если они будут в имени файла, то команда будет неверно интерпретирована. Также обратите внимание на то, что заглавные и строчные буквы это не одно и тоже. И если вы вместо заглавной буквы наберёте строчную (и наоборот) в имени файла, то получите ошибку, что такого файла нет.

Теперь осталось преобразовать JPEG в PDF, сшивая отдельные JPEG, принадлежащие одному документу. Для этого снова используем convert:
convert IMG_0001_small.jpg -compress JPEG2000 pdfFileName.pdf

Получаем pdf. В моём примере он получился 405,1 КБ. Для обьеденения нескольких JPEG в один PDF в команде convert предусмотрен параметер -adjoin . Так команда:
convert *.jpg -adjoin -monitor -compress JPEG2000 output.pdf

преобразует все JPEG из данной директории в один PDF. Параметр -monitor используется для отображения прогресса выполнения операции. Однако насколько я понял на данный момент вызов convert с параметром -adjoin возвращает ошибку Segmentation fault. Поэтому предлагаю конвертировать JPEG, принадлежащие к одному документу по отдельности и затем обьеденять их спомощью команды:
pdftk *.pdf cat output combined.pdf

pdftk также можно установить через Synaptic.

Возможно Вам будет интересно:
Ссылка на тему в linuxforum.ru, в которой освещается влияние значения параметра -compress на размер получаемого PDF файла.

Комментариев нет:

Отправить комментарий