Рассмотрим случай, когда на одной машине (desktop) стоит все та же Ubuntu, а на другой машине (notebook) стоит Windows XP.

Необходимо соединить оба компьютера по ad-hoc wifi. Требуется создать локальную домашнюю сеть, которая называется одноранговой. Другими словами, у нас нет в наличии таких сетевых устройств, как концентратор, коммутатор или маршрутизатор. Соединение между двумя (в нашем случае) компьютерами будет установлено напрямую, точка-точка. В первом шаге настроим сеть на десктопе в Ubuntu. Затем повторим настройку на ноутбуке в Windows XP.

И в заключение, протестируем созданную нами сеть.

Шаг Первый - настройка ad-hoc wifi в Ubuntu Karmic

Открываем NetworkManager правым щелчком мыши на значке в Панели Gnome и выбираем “Edit connections”. Появляется окно “Network Connections”.

Переходим на вкладку “Wireless” (Беспроводные):

Start Network Connections

Нажимаем Add (Добавить). Появляется окно из четырех вкладок (tabs) для создания нового соединения. В первой вкладке вводим общую информацию о создаваемой нами сети:

  • Connection name (имя сети) - это имя сети, которое будет отображаться на компьютере и в списке сетей NetworkManager;
  • SSID - реальное имя сети. Каждая сеть Wi-Fi имеет свое имя, по которому сетевые устройства распознают их и подключаются к ним;
  • Mode - режим сети. В выпадающем списке выбираем режим сети Ad-hoc;
  • остальные три поля - BSSID, MAC address и MTU оставляем пустыми.

Ubuntu Editing Windows XP

Переходим на вкладку “Wireless Security”. Оставляем поле “Security” пустым (None):

Security Editing Windows_XP

Далее, переходим на вкладку “IPv4 Settings”. Здесь мы выбираем метод получения IP-адреса компьютером в сети. В нашем случае мы задаем его вручную.

Для этого в выпадающем списке “Method” выбираем “Manual” (Ручной). Затем, в поле “Addresses” (Адреса) нажимаем кнопку Add (Добавить) и последовательно задаем IP-адрес 192.168.0.30, маску сети “Netmask” 255.255.255.0 и шлюз сети “Gateway” 1.1.1.1. Поля “DNS servers” и “Search domains” оставляем пустыми:

IPv4 Settings-Editing Windows_XP

Вкладку “IPv6 Settings” оставляем как есть, ничего не конфигурируя (Method - Ignore):

IPv6 Settings-Editing Windows_XP

Нажимаем кнопочку Apply (Применить) и видим конечный результат работы - список сетей в “NetworkManager” и нашу Windows_XP среди них:

Finish Network Connections

Закрываем окно. Вновь нажимаем, теперь уже левой кнопкой мыши, на значке “NetworkManager” в Панели Gnome. Выбираем в выпавшем списке “Connect to hidden wireless network” (Подключиться к скрытой беспроводной сети).

В списке “Connection” выбираем нашу Windows XP и нажимаем Connect (Соединить):

Connect to hidden wireless network

В эмуляторе терминала набираем команду:

$ sudo ifconfig -a

и видим, что сетевой интерфейс поднят и сеть запущена:

Ubuntu Desktop

Шаг Второй - Настройка ad-hoc wifi в Windows XP

Открываем в “Панели управления” - “Сетевые подключения”:

Network Connections Windows XP

Кликаем правой кнопкой мыши на значке “Беспроводное сетевое соединение” и в контекстном меню - “Properties” (Свойства). В окне “Свойств” находим в самом низу строку “Протокол Интернета (TCP/IP)”:

TCP IP Windows XP

Нажимаем “Свойства”. Открывается окно настроек TCP/IP. Здесь мы задаем IP-адрес, маску сети и шлюз сети так же, как и в NetworkManager, за исключением того, что IP-адрес у нас будет несколько иной - 192.168.0.31:

Properties TCP IP Windows XP

Нажимаем OK. Далее кликаем левой кнопкой мыши на значке “Беспроводное сетевое соединение” в “Сетевые подключения” “Панели управления”. Открывается окно со списком беспроводных сетей, находящихся в зоне доступа компьютера:

Start Wireless Networks Windows XP

Выбираем “Установить беспроводную сеть” для создания сети ad-hoc. Запускается “Мастер беспроводной сети”, пошагово проведущий по несложной настройке новой сети windows:

Step1 Windows XP

Step2 Windows XP

Step3 Windows XP

Step4 Windows XP

Step5 Windows XP

Нажимаем “Готово”. Вновь открывается окно со списков доступных беспроводных сетей. В этом списке появилась и наша windows:

Step6 Windows XP

Выбираем сеть windows и нажимаем “Подключить”:

Step7 Windows XP

Step8 Windows XP

В итоге получаем подключение к сети windows:

Step9 Windows XP

Шаг Третий - тестирование сети из Ubuntu

Ping самих себя:

Ping Self - Network Tools

Ping Windows XP:

Ping Windows - Network Tools

Трассировка Windows XP:

Traceroute Windows - Network Tools

Сканирование портов Windows XP:

Port Scan Windows - Network Tools

На этом все.


Свойство box-shadow позволяет web-дизайнерам создавать очень интересные эффекты для элементов страницы. А именно - с помощью него можно задавать тень для блочных элементов, например таких, как div.

Создаваемая тень имеет несколько параметров, комбинация которых позволяет придать оригинальный и неповторимый вид элементу. Можно установить смещение тени по горизонтали, по вертикали, задать цвет, степень размытия краев, размер. В CSS3 имеется возможность создать для элемента сразу несколько теней, с разным цветом и размерами.

Можно также создать тень, которая будет размещена не снаружи элемента, а внутри него.

Синтаксис свойства box-shadow:

box-shadow: h-shadow v-shadow blur spread color inset;

где:

  • h-shadow - смещение тени по горизонтали;
  • v-shadow - смещение тени по вертикали;
  • blur - размытие границ тени;
  • spread - размер тени;
  • color - цвет тени;
  • inset - создать тень внутри элемента.

Порядок следования значений свойства box-shadow необязательный, то есть, можно расположить их в любой последовательности.

Простой пример использования box-shadow:

Браузеры Firefox, Chrome, Opera и IE9 отобразят серую тень под этим блоком.

Код, выводящий данный результат:

box-shadow: 5px 5px 2px #888;

Однако, приведенный пример будет не совсем работоспособным. Для браузеров Firefox и Chrome более ранних версий может понадобиться добавление префиксов. Тогда полная версия кода будет выглядеть следующим образом:

box-shadow: 5px 5px 2px #888;
-moz-box-shadow: 5px 5px 2px #888;
-webkit-box-shadow: 5px 5px 2px #888;

Как говорилось выше, порядок следования значений свойства необязателен. Более того, из всех шести значений обязательными являются только два первых - смещение по горизонтали и по вертикали. Все остальные можно опустить, если в них нет необходимости.

Примеры использования кода:

box-shadow: 5px 5px;
box-shadow: 5px 5px 2px;
box-shadow: 5px 5px 2px #888;
box-shadow: 5px 5px 2px 3px #888;
box-shadow: 5px 5px 2px 3px #888 inset;
box-shadow: 5px 5px 2px #888, -5px -5px #f4f4f4, 1px 1px 2px #cc6600;

Последняя строка наиболее интересна, поэтому разберем ее подробнее.

Смещения по горизонтали и вертикали могут принимать как положительные, так и отрицательные значения. В последнем случае тень будет перемещаться не вправо, а влево. Размытие тени blur и размер тени spread могут иметь только положительные значения или 0. Несколько теней для одного элемента можно задавать последовательно, через запятую. В нашем примере было задано три тени с разными цветами и смещением.

Теория box-shadow

По умолчанию, для элемента создается внешняя тень.

Тень создается как минимум с посощью двух обязательных параметров - горизонтального и вертикального смещения.

Горизонтальное смещение определяет смещение тени относительно элемента по горизонтали. Может принимать положительное или отрицательное значение. При положительном значении тень смещается вправо от элемента. При отрицательном - влево от элемента.

Вертикальное смещение задает смещение тени по вертикали относительно элемента. Может рпинимать положительное или отрицательное значение. При положительном значении тень смещается относительно элемента вниз по вертикали. При отрицательном значении смещение происходит вверх по вертикали.

Третье и необязательное значение свойства box-shadow, это размытие blur. По умолчанию оно равно 0 и граница тени четкая. Размытие может принимать только положительные значения. Чем больше число, тем сильнее происходит размытие. В спецификации не разъясняется точного алгоритма, по которому происходит усиления размытия при увеличении его значения.

Размер тени spread также явлется необязательным параметром и может принимать как положительные, так и отрицательные значения. При положительном значении тень увеличивается по всем направлениям. При отрицательном наоборот уменьшается.

Несколько примеров теней

Ниже приведены несколько небольших примеров создания теней с разными смещениями, размытием и размером.

В примере A смещение тени происходит влево и вверх на 5 пикселей.

#Example_A {
 -moz-box-shadow: -5px -5px #888;
 -webkit-box-shadow: -5px -5px #888;
 box-shadow: -5px -5px #888;
}

В примере B точно также происходит смещение на пять пикселей вверх и влево, но при этом добавлено размытие тени величиной в 5 пикселей. Хорошо видно, что тень имеет нечеткие границы.

#Example_B {
 -moz-box-shadow: -5px -5px 5px #888;
 -webkit-box-shadow: -5px -5px 5px #888;
 box-shadow: -5px -5px 5px #888;
}

В примере С таже самая тень имеет размер в 5 пикселей.

#Example_C {
 -moz-box-shadow: -5px -5px 0 5px #888;
 -webkit-box-shadow: -5px -5px 0 5px#888;
 box-shadow: -5px -5px 0 5px #888;
}

Пример D показывает тень, имеющую размытие в 5 пикселей и размер в 5 пикселей.

#Example_D {
 -moz-box-shadow: -5px -5px 5px 5px #888;
 -webkit-box-shadow: -5px -5px 5px 5px#888;
 box-shadow: -5px -5px 5px 5px #888;
}

В примере E показана тень, которая не имеет смещения по горизонтали и вертикали, но у нее задано размытие в 5 пикселей.

#Example_E {
 -moz-box-shadow: 0 0 5px #888;
 -webkit-box-shadow: 0 0 5px#888;
 box-shadow: 0 0 5px #888;
}

В примере F тень также не имеет смещения, но имеет размытие и размер в 5 пикселей.

#Example_F {
 -moz-box-shadow: 0 0 5px 5px #888;
 -webkit-box-shadow: 0 0 5px 5px#888;
 box-shadow: 0 0 5px 5px #888;
}

На этом все.


Столкнулся с такой трудностью, как вырезать логотип из шапки макета.

Проблема заключалась в том, что один слой накладывался на другой. Решение было найдено благодаря помощи форума htmlbook. Итак, имеется фрагмент шапки. Из нее необходимо вырезать будущий логотип, который должен представлять из себя файл с прозрачным фоном, значком флага и надписью “Formula”:

Фрагмент шапки сайта

Выбираем инструмент “Перемещение”, проверяем, что в панели отмечен флажок “Автовыбор: Группы слоев”. Поочередно кликаем в шапке на значке флага, надписи “Formula” и фоновой заливке, одновременно отмечая, какие слои отвечают за прорисовку каждого элемента макета.

В результате в панели слоев видим три слоя, которые в сумме составляют шапку: “Formula”, “Layer26”, “Shape2”:

Слои, отрисовывающие логотип шапки

Для дальнейшей работы с данными слоями наиболее удобным вариантом будет скопировать их в отдельный новый документ. Этим достигаются две цели:

  • во-первых - с отдельно выделенными из документа слоями удобнее работать;
  • во-вторых - таким образом мы обезопасим себя от случайного непреднамеренного изменения исходного документа.

И хотя в Photoshop есть инструмент “История”, все же данный способ мне кажется более удобным.

Итак, выделяем все три слоя. Для этого зажимаем клавишу Ctrl и поочередно кликаем мышью на слоях “Formula”, “Layer26”, “Shape2”. Затем переходим в меню “Слои - Дубликат слоев”.

Открывается небольшое диалоговое окно “Дубликат слоев”, в котором выбираем назначение “Документ - Новый” и нажимаем ОК. Выбранные нами слои продублируются (создадутся копии) в новый документ Photoshop, который автоматически откроется в новой вкладке “Безимени-1.

Шахматка в фоне означает, что фоновый слой прозрачный. Уберем лишние прозрачные пиксели фона, которые нам ни к чему. Но перед этим еще раз проанализируем три продублированных слоя.

Слой “Formula” представляет из себя текст с эффектом тени. При вырезании логотипа мы оставим его как есть - вместе с тенью. В этом случае текст “попадет” в шапку будущего шаблона сайта неизменным - нарисованным тем шрифтом, который выбрал дизайнер. Это полностью нас устраивает.

Следующий слой - это значок флага. Его мы также должны перенести в шапку шаблона. Третий слой - фоновая заливка с градиентом. На панели слое мы видим, что оба последних слоя взаимосвязаны друг с другом - “Layer26” и “Shape2”.

Помимо этого, к слою “Shape2” применены эффекты - внутренняя и внешняя тени. От них мы можем легко избавиться, так они свободно реализуются с помощью стилевых правил CSS, которые мы пропишем в будущем шаблоне. Поэтому отключаем их, щелкнув на “глазе” напротив надписи “Эффекты”:

Анализируем свойства продублированных слоев

Теперь уберем прозрачные пиксели фонового слоя. Для этого воспользуемся инструментов “Тримминг”. Переходим в меню “Изображение - Тримминг”.

Откроется окно настроек, в котором убедимся, что удаление лишних пикселей будет производиться на основе прозрачных пикселей и при этом обрезка будет происходить со всех сторон изображения: сверху, снизу, слева, справа. Жмем ОК:

Обрезка прозрачных слоев фона

Видим, что фон удалился и осталось только само изображение: фон, флаг и надпись “Formula”. Теперь необходимо убрать фоновую заливку. Ее мы сделаем средствами CSS, в том числе и градиент. Это уменьшит размер результирующего файла, что положительно скажется на скорости загрузки сайта.

Для этого просто удалим слой “Shape2”, который и является фоном шапки. Выделяем его в панели слоев и жмем клавишу Delete. Получается такая картина в панели:

Панель с удаленным слоем Shape2

В рабочем окне Photoshop также изменилось кое-что. А именно - удалилась заливка и остались только значок флага и надпись “Formula”.

Это как раз то, что нам и требовалось. И опять появилась шахматка на месте бывшего слоя Shape2. Ее мы может опять-таки, тоже удалить. А точнее - обрезать получившееся изображение тем же способом - через инструмент “Тримминг”.

Ведь мы стремимся уменьшить размер результирующего изображения до минимума и лишние пиксели нам ни к чему. Обрезаем его через Тримминг и получаем в результате:

Изображение с удаленным фоном шапки макета

Все готово - мы получили то, что требовалось. Осталось сохранить результирующее изображение, как и положено - для Web. Естественно, сохранение производим в формате png, так как он поддерживает прозрачные пиксели (нужные нам для фона) и хорошую передачу оттенков цветов (градиент). Сам процесс сохранения я описывать не буду - он прост и многократно был описан в Сети.

Создаем стилевые правила для шапки будущего шаблона сайта:

 class="header">
  class="logo">
   href="/" title="На главную">
    src="images/logo.png">
  
 
.logo{
 position: absolute; top: 0; left: 0;
}
.header {
 -webkit-border-radius: 3px;
   -moz-border-radius: 3px;
     border-radius: 3px;
 -webkit-box-shadow: 0 4px 4px rgba(0, 0, 0, 0.3), inset 0 1px 0 rgba(255,255,255,0.3);
   -moz-box-shadow: 0 4px 4px rgba(0, 0, 0, 0.3), inset 0 1px 0 rgba(255,255,255,0.3);
     box-shadow: 0 4px 4px rgba(0, 0, 0, 0.3), inset 0 1px 0 rgba(255,255,255,0.3);
 height: 45px;
 background-color: #bf1919;
 overflow: hidden;
 position: relative;
}

На этом все.


Одним из незаменимых инструментом для работы верстальщика является текстовый редактор Notepad++.

Легкий, удобный и бесплатный. С массой различных плагинов, превращающих его в тот инструмент, который необходим в работе. Это блокнот для программистов, причем не только web-кодеров, но из javascript, php-разработчиков. Недаром он пользуется неизменной популярностью на протяжении стольких лет.

В этой статье мне хочется рассказать об одной из возможностей Notepad++. Это его способность работать с существующими документами. Точнее, с теми файлами, которые открыты в текущий момент в этой программе.

Рассмотрим такую ситуацию. Имеются два документа, которые одновременно открыты в программе Notepad++. По умолчанию, каждый документ открывается в отдельной вкладке. Эти вкладки могут располагаться по разному, все зависит от предпочтений пользователя и настроек программы.

Может случится так, что имеется оригинал документа, на основе которого необходимо создать свой файл. Такой случай может произойти, к примеру, когда создается файл templateDetails при создании шаблона под Joomla.

Когда оба файла - оригинал и создаваемый на его основе, расположены во вкладках, работать не совсем удобно. Приходится постоянно переключаться между ними - в одном смотреть строки кода в качестве образца, в другом - вносить изменения:

Два документа, открытые в одном окне Notepad++

Notepad++ может упросить и ускорить эту работу. Для этого необходимо щелкнуть правой кнопкой мыши на активной вкладке и выбрать из контекстного меню пункт “В другое окно”. Эта возможность мне кажется одной из наиболее удобных и полезных:

Переместить текущий документ в другое окно Notepad++

В результате окно блокнота разделится по вертикали на две половины. В левой половине останется оригинал - тот файл, который был неактивен. А в правую половину будет перенесен текущий документ. Получится, что одновременно будут видны оба документа:

Два документа, разнесенные в правую и левую часть окна Notepad++

Теперь оба документа, что называется, перед глазами. Можно легко сравнивать оригинал с редактируемым файлом. Одно слово - удобно.

Вторая возможность Notepad++ - это переместить копию текущего документа в правую часть окна. То есть, основное окно программы также разделяется на две вертикальные части. Но в правую часть перемещается копия открытого документа.

Чтобы открыть копию документа в правой части окна, также нужно щелкнуть правой кнопкой мыши на вкладке и выбрать из списка теперь уже пункт “Дублировать в другое окно”:

Скопировать в другое окно Notepad++

Две копии одного документа будут разнесены по разным частям окна.

Третья возможность Notepad++ - это перемещение существующего документа в новый экземпляр. То есть, у нас имеется два файла, которые одновременно открыты в одной программе Notepad++. Если нам необходимо переместить одних из этих документов в отдельное окно блокнота, то в контекстном меню (также, как и в предыдущий случаях) необходимо выбрать пункт “Переместить в Новый экземпляр”:

Переместить документ в новый экземпляр Notepad++

В результате будет запущен еще один экземпляр программы Notepad++, в котором автоматически откроется перемещаемый нами документ:

Два разных документа, открытых в двух экземплярах Notepad++

И последняя из рассматриваемых возможностей Notepad++ при работе с окнами - это когда необходимо открыть тот же экземпляр текущего документа в новом окне. То есть, текущий документ будет продублирован в новом экземпляре программы Notepad++.

Для этого снова открываем контекстное меню и выбираем теперь в нем пункт “Открыть в Новом экземпляре”:

Открыть текущий документ в новом экземпляре Notepad++

Получится две копии одного и того же файла, но открытые в двух разных окнах программы Notepad++:

Один и тот же документ, открытый в двух экземплярах Notepad++

На этом рассмотрение возможностей блокнота при работе с открытыми документами заканчивается.


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

Что делать, если хочется создать точный - и самое главное - хороший перевод? Нужно, чтобы в этом переводе тоже присутствовали соответствующие теме скрины. И как поступить? Создавать свои собственные? Это довольно трудоемкий и длительный процесс. Конечно, речь не идет о какой-либо программе - в репозиториях Linux достаточно одной команды, чтобы ее поставить. А вот если дело касается дистрибутива? И если он “весит” около 2Gb? “Тянуть” и ставить его только ради скриншотов?

Вывод однозначен - надо “забрать” картинки из самого pdf-файла. Под OS Windows ответ напрашивается сам собой - Adobe Acrobat. Но если под Linux? Тоже выход есть! И даже еще аккуратнее - не надо мучиться с установкой гиганта Acrobat только для извлечения картинок с помощью последнего (например, у меня версия Adobe Acrobat 9.4 Pro “весит” 631Mb! Уму непостижимо - ведь это всего лишь одна программа!).

Итак, решаем проблему под 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 создает имена графических файлов. За примером далеко ходить не надо. Смотрим на результат работы малютки - и все сразу станет понятно:

$ ls nessus-003.jpg nessus-007.ppm nessus-011.ppm nessus-015.ppm nessus-019.ppm
nessus-023.jpg nessus-027.jpg nessus-000.ppm nessus-004.ppm nessus-008.ppm
nessus-012.ppm nessus-016.ppm nessus-020.ppm nessus-024.ppm nessus-001.ppm
nessus-005.ppm nessus-009.jpg nessus-013.jpg nessus-017.jpg nessus-021.jpg
nessus-025.ppm nessus-002.jpg nessus-006.ppm nessus-010.jpg nessus-014.jpg
nessus-018.jpg nessus-022.jpg nessus-026.jpg

Программка 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

И опять смотрим:

$ ls nessus-003.jpg nessus-010.jpg nessus-014.jpg nessus-018.jpg
nessus-022.jpg nessus-026.jpg nessus-002.jpg nessus-009.jpg
nessus-013.jpg nessus-017.jpg nessus-021.jpg nessus-023.jpg
nessus-027.jpg

Совсем другое дело! Как раз то, что нам нужно! Можно сказать, дело в шляпе. Посмотрим результат. Ведь интересно же - действительно ли все получилось? Пусть это будет nessus-027.jpg:

Пример работы утилиты pdfimages в Linux

Резюме

Как вам такое решение “проблемы”? Для меня, так очень даже ничего! Изящно, красиво и быстро. И самое главное - результат! И тогда зачем возиться с программами под Windows, такими как например, специализированная утилита PDF Image Extraction Wizard. Да, имеет она красивый интерфейс. Но ведь фактически нужно платить только за него. Я уже не говорю о стоимости “монстра” Adobe Acrobat!

На этом все.