Автор Тема: Как объединить принтер и сканер в копир?  (Прочитано 3611 раз)

drobovik

  • Новичок
  • *
  • Сообщений: 1
  • Карма: +0/-0
    • Просмотр профиля
Добрый день
Подскажите, пожалуйста, есть ли программа под Ubuntu *32 (или Линукс минт *32), объединяющая принтер и сканер в копир?
(подобно тому, как это под виндой делает софт типа iCopy или Photocopier)

железо МФУ HP deskjet 2180 (принтер накрылся в этом МФУ) и принтер HP laserjet 1018

Буду благодарен за любые идеи.

Alexander7_88

  • Ветеран
  • *****
  • Сообщений: 1514
  • Карма: +217/-4
  • Универсальный поисковый бот
    • Просмотр профиля
Re: Как объединить принтер и сканер в копир?
« Ответ #1 : 16 Сентябрь 2011, 08:22:20 »
Чем я люблю linux, если чего нет сделай сам!
#! /bin/bash

 path_pwd=`pwd` ;

 if `scanimage -n` &> /dev/null ;
 then

 if [ ! -d $path_pwd/scan_images ] ;
 then
   mkdir $path_pwd/scan_images ;
 fi

 scanimage -v -p --mode Gray --resolution 200 > $path_pwd/scan_images/tmp.ppm ;
 if [ -f $path_pwd/scan_images/tmp.ppm ] ;
 then
   file_time=`date +%d.%m.%y_%H.%M.%S` ;
   convert  $path_pwd/scan_images/tmp.ppm $path_pwd/scan_images/$file_time.jpg ;
   rm $path_pwd/scan_images/tmp.ppm ;
lpr -o landscape -o fit-to-page -o media=A4 $path_pwd/scan_images/$file_time.jpg
   echo "ГОТОВО !!!" ;
 else
   exit 0 ;
 fi

 else
 echo "Сканер не подключен!" ;
 fi
 exit 0 ;

Сначала проверка наличия сканера.
Если он не подключен, то выводит соответствующее сообщение и благополучно завершает свою работу.
Если сканер подключен то создаётся каталог "scan_images" в корневой директории текущего пользователя. Далее запускается программа scanimage - сканируем и сохраняем полученный файл (гамма - отттенки серого, разрешение 200) в созданный каталог. Файл сохраняется в формате ppm, что не совсем удобно для дальнейшего использования, поэтому используем программу convert преобразуя ppm в jpg. И сохраняем полученное изображение в том же каталоге, но с именем соответствующим текущему дате и времени. Затем "подчищаем хвосты" - удаляем ненужный файл ppm. Ну и последнее - это выводим сообщение о завершении работы и отправляет на принтер по умолчанию.
Пока без графического интерфейса, если сильно нужно можно прикрутить.
« Последнее редактирование: 16 Сентябрь 2011, 08:24:56 от Alexander7_88 »

Azure

  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2118
  • Карма: +275/-114
  • Обычно я му-р-р-р-чу
    • Просмотр профиля
    • Exilibris Web Development
Re: Как объединить принтер и сканер в копир?
« Ответ #2 : 17 Сентябрь 2011, 13:42:59 »
Спасибо за скрипт!
В порядке предметной критики:
  • зачем использовать текущий каталог? Может все-таки лучше /tmp или /var/tmp?
  • И не очищать его для сохранения истории (потом сам почистится при перезагрузке)?
  • Ну и совсем придирка: корневая директория пользователя обозначается знаком "~"(тильда) или если хотите переменную, то это $HOME
Ну и коментарии может лучше писать в самом коде? ;)
« Последнее редактирование: 17 Сентябрь 2011, 13:48:35 от Azure »

Alexander7_88

  • Ветеран
  • *****
  • Сообщений: 1514
  • Карма: +217/-4
  • Универсальный поисковый бот
    • Просмотр профиля
Re: Как объединить принтер и сканер в копир?
« Ответ #3 : 17 Сентябрь 2011, 17:37:19 »
#! /bin/bash

file_time=`date +%d.%m.%y_%H.%M.%S` ; #создаем временную метку
scan_file="/tmp/tmp_${file_time}.ppm" ; #устанавливаем название файла скан-имиджа
scan_dir="~/scan_images" ; #назначаем целевую папку для хранения сканов


if `scanimage -n` &> /dev/null ; #проверяем наличие сканера
then
if [ ! -d ${scan_dir}] ; #смотрим есть ли папка scan_images в домашней папки
then
mkdir ${scan_dir} ; #если нет то создаём
fi
scanimage -v -p --mode Gray --resolution 200 > ${scan_file} ;
#скан в /tmp c разрешением 200 dpi, оттенки серого и дописываем временную метку для истории
if [ -f ${scan_file} ] ;  #проверяем наличие в /tmp сканированого файла
then
convert ${scan_file} ${scan_dir}/${file_time}.jpg ;
# конвертируем ppm в jpg и сохраняем его в папке сканов
lpr -o landscape -o fit-to-page -o media=A4 ${scan_dir}/${file_time}.jpg
#отправляем jpg-файл на принтер по умолчанию
    echo "ГОТОВО !!!" ;
else
exit 0 ; #выход из скрипта
fi
else #если сканера нет или с ним работает другая программа
echo "Сканер не подключен!" ;
fi

exit 0 ;
Спасибо за критику, это полезно. :-D
« Последнее редактирование: 18 Сентябрь 2011, 02:28:13 от Azure »