Zenway

Linux - это интересно!

Вы не вошли.

#1 29-07-2011 21:08:57

pefon
Участник
Откуда: Липецк
Здесь с 28-10-2010
Сообщений: 129
UbuntuChromium 14.0

Про то как вытянуть картинки из pdf-файла.

С недавнего времени, всерьез занявшись написанием статей, столкнулся в небольшой трудностью. Заключается она в следующем: имеется материал в формате pdf, на его основе нужно написать небольшую статейку в одно из  технических сообществ. В текст недурно было бы добавить картинки или схемы.

Что делать, если хочется создать хорошую статью?
Правильно  нужно, чтобы в этой статье тоже присутствовали соответствующие теме скрины. И как поступить? Создавать свои собственные? Это довольно трудоемкий и длительный процесс. А если нет воображения и руки не оттуда растут?

Конечно, речь не идет о какой-либо программе - в репозиториях Linux достаточно одной команды, чтобы ее поставить. А вот если дело касается дистрибутива? И если он "весит" около 2Gb? "Тянуть" и ставить его только ради скриншотов?
Увольте!

Вывод однозначен - надо "забрать" картинки из самого pdf-файла.

Под OS Windows ответ напрашивается сам собой - Adobe Acrobat. Но если под Linux? Тоже выход есть! И даже еще аккуратнее - не надо мучиться с установкой гиганта Acrobat только для извлечения картинок с помощью последнего.

Итак, решаем проблему под Linux.

Шаг первый

Устанавливаем пакет xpdf. Программа стара, как мир и имеется в репозитории любого уважающего себя дистрибутива Linux. А об Ubuntu/Debian и говорить не приходиться. Там как в Греции - все есть!

$ sudo aptitude install xpdf

Шаг второй

Сама по себе "гляделка" pdf-файлов xpdf нам в принципе не нужна. Интерфейс у нее убогий и не тянет на сравнение с тем же Okular . Но это и не важно. Мы ее не затем ставили. А ставили ради маленькой программы pdfimages, которая входит в состав этого пакета. Лишний раз проверим, так ли это. Посмотрим, есть ли она в системе после установки xpdf:

Для этого в консоли введём:

$ whereis pdfimages

если ответ будет вот таким то всё окей и вери ну прямо очень вери гуд:

pdfimages: /usr/bin/pdfimages /usr/share/man/man1/pdfimages.1.gz


Шаг третий

Теперь, собственно, и приступаем к самому процессу извлечения. Переходим в директорию, в которой лежит наш "пациент" - назовём его jul2011.pdf:

$ cd /media/disk-2/works/journals/indian_hacker
$ ls
 apr2011.pdf jul2011.pdf jun2011.pdf mar2011.pdf may2011.pdf

И "напускаем" на него нашу "крошку" pdfimages:

$ pdfimages -f 3 -l 9 -j jul2011.pdf nessus

Опции команды описывать не буду - они, прямо скажем, примитивны и легко узнаются по стандартной команде --help. Здесь я применил только некоторые из них (и если честно сказать - почти все):

-f -- номер первой страницы pdf-файла, из которого будут извлекаться картинки;
-l -- аналогично - номер последней страницы pdf-файла (то есть, опциями f и l мы задаем диапазон в pdf-файле, откуда будем извлекать картинки; это в том случае, когда не хотим получить ВСЕ картинки из ВСЕГО pdf-файла);
-j -- конвертировать извлеченные картинки в формат jpg.

Единственное, о чем стоит упомянуть - это следующее. У меня вызвано легкий ступор, ибо является не очевидным фактом: имя nessus в конце команды. Это имя может быть любым другим, на ваш выбор, но оно должно быть! Это своеобразная маска, по которой программа pdfimages создает имена графических файлов. За примером далеко ходить не надо. Смотрим на результат работы малютки - и все сразу станет понятно:


Программка pdfimages даже оказалась слишком старательной - она вытянула все, что смогла. И что смогла - пере конвертировала в формат jpg, как мы ей и сказали опцией -j. А что не смогла - оставила в формате ppm. Об этом же говориться и в man'е программы:

"Normally, all images are written as PBM (for monochrome images) or PPM (for non-monochrome images) files.  With this option, images in DCT format are saved as JPEG files. All non-DCT images are saved in PBM/PPM format as usual."

Ну, нам ее излишняя старательность ни к чему (все, что она сохранила в формате ppm, является несущественным в данном случае), поэтому выполняем легким движением руки (точнее - пальцев):

$ rm *.ppm

И опять смотрим что же у нас получилось?

Совсем другое дело! Как раз то, что нам нужно! Можно сказать, дело в шляпе.

Посмотрим результат. Ведь интересно же - действительно ли все получилось? Пусть имя файла теперь станет:

nessus-027.jpg

Как вам такое решение "проблемы"?

Для меня, так очень даже ничаво!

Изящно, красиво и быстро.

И самое главное - результат! И тогда зачем возиться с программами под Windows, такими как например, специализированная утилита PDF Image Extraction Wizard?

Да, имеет она красивый интерфейс. Но ведь фактически нужно платить только за него. Я уже не говорю о стоимости "монстра" Adobe Acrobat!

Написано ( частично содрано   smile ) на основе вот этой статьи: http://rus-linux.net/nlib.php?name=/MyL … ailov.html

Отредактировано pefon (29-07-2011 21:14:10)


"Сначала они вас игнорируют, потом смеются над вами, потом борются с вами, а потом вы побеждаете" Махатма Ганди.

Вне форума

29-07-2011 21:08:57

google
реклама

Re: Про то как вытянуть картинки из pdf-файла.



#2 30-07-2011 00:10:07

posixru
Модератор
Откуда: СССР
Здесь с 21-10-2010
Сообщений: 1,448
Сайт
LinuxSeaMonkey 2.2

Re: Про то как вытянуть картинки из pdf-файла.

Не знал я про эту функцию xpdf, спасибо что просветили! Ну а тот ко боится консоли, может воспользоваться PDFedit.
50f63aec3df01308842a37ea4d4.gif
В ней можно из PDF файлов вытаскивать (ну и добавлять) не только картинки но и текст с шрифтами ... Там так много всего, что заблудится можно!
924bf361bca3cee3ff514fd90c2.gif

Вне форума

#3 30-07-2011 11:46:31

vovans
Администратор
Откуда: Ростов-на-Дону
Здесь с 19-10-2010
Сообщений: 481
Сайт
LinuxSeaMonkey 2.1

Re: Про то как вытянуть картинки из pdf-файла.

Я бы ещё порекомендовал PDFmod.

Ну очень простая программа для несложного редактирования pdf-файлов.


zenway admin

Вне форума

#4 30-07-2011 18:47:26

posixru
Модератор
Откуда: СССР
Здесь с 21-10-2010
Сообщений: 1,448
Сайт
LinuxSeaMonkey 2.2

Re: Про то как вытянуть картинки из pdf-файла.

vovans пишет:

Ну очень простая программа для несложного редактирования pdf-файлов.

А ещё в Gimp можно...
19df5a094f1fc94b41e249b1592.gif
Видеосамоучитель Gimp

Вне форума

#5 24-11-2013 15:15:53

Schaman
Участник
Здесь с 19-10-2013
Сообщений: 42
UbuntuFirefox 25.0

Re: Про то как вытянуть картинки из pdf-файла.

А можно просто конвертнуть pdf в LOWriter и вынуть картнику. Все просто  big_smile


Yes, we are Linux Community.Yes, we can all

Вне форума

#6 24-11-2013 20:56:40

Douglas
Участник
Здесь с 28-09-2013
Сообщений: 9
LinuxFirefox 25.0

Re: Про то как вытянуть картинки из pdf-файла.

Schaman пишет:

А можно просто конвертнуть pdf в LOWriter и вынуть картнику. Все просто  big_smile

а можно прямо из pdf вынуть картинку... это еще проще... н-р, в evince это делается простым перетаскиванием...
ну а если нужно сразу целую кучу картинок, то pdfedit делает это за считанные секунды...


Arch_Linux_userbar_by_anonymous_bot.png    * Arch Linux * KDE *

Вне форума

#7 14-12-2013 14:28:24

vovans
Администратор
Откуда: Ростов-на-Дону
Здесь с 19-10-2010
Сообщений: 481
Сайт
LinuxSeaMonkey 2.22

Re: Про то как вытянуть картинки из pdf-файла.

Попалось на убунтофоруме, как перегнать pdf в jpeg. Не "картинки из", а именно целиком...

Лучше всего это делает Gimp.

По качеству хуже чуть, но зато из командной строки:

convert -quality 100 -density 300 -verbose -trim -scale 561x796 my_file.pdf -sharpen 0x1.0 my_file.jpg

density если сразу указывать меньше, то качество получается отвратным. Лучше потом сжать jpeg.

Лучше результат (но не лучше, чем через Gimp) будет, если конвертировать по цепочке - PDF -> SVG -> PNG -> JPG.

1. PDF -> SVG (используя pdf2svg):

#!/bin/sh
# Конвертирование выбранные pdf файлы в svg
while [ $# -ne 0 ]
do
	pdf2svg $1 $1%d.svg all
	shift
done

2. SVG -> PNG (используя inscape в режиме командной строки):

#!/bin/sh
# Конвертирование выбранные svg файлы в png

while [ $# -ne 0 ]
do
	inkscape $1 --export-dpi=200 --export-png=$1.png
	shift
done

3. PNG -> JPG (используя ранее рассмотренную утилиту convert из Imagemagic):

#!/bin/sh
# Сконвертировать выбранные png файлы в jpg
while [ $# -ne 0 ]
do
	convert $1 $1.jpg
	shift
done

zenway admin

Вне форума

Сейчас в этой теме пользователей: 0, гостей: 1
[Bot] CCBot

Подвал форума

Под управлением FluxBB
Модифицировал Visman

[ Сгенерировано за 0.007 сек, 8 запросов выполнено - Использовано памяти: 530.66 Кбайт (Пик: 637.46 Кбайт) ]