Часть первая. Продолжение данной статьи читайте ubuntu + 1Cv8 + winXP-7-8. Печать на электронную почту
Спасибо людям, благодаря которым возникла данная статья: Atheist, Landre за дельные подсказки neomatrix, со статьи которого Установка терминального сервера на базе Ubuntu Server 12.04 LTS 64-bit для работы c платформой 1C 8.3 все и началось.
При переходе с Windows server на Ubuntu возникли проблемы печати. Оказалось, что в отличие от винды драйвера под Ubuntu либо есть не всегда, либо работают плохо. Печать на расшаренные принтеры виндовых клиентов из-под Ubuntu - вообще отдельная тема.
Рекомендация: Если Вы только собираетесь переходить на Linux и есть возможность купить принтер - покупайте принтеры HP с сетевым интерфейсом (RJ-45) это избавит Вас от головной боли с печатью. Если принтеры уже куплены - читайте дальше.
Настраиваем Ubuntu Server: Предполагаем, что сервер имеет ip 192.168.1.100
Устанавливаем систему печати в PDF
sudo apt-get install cups-pdf
Устанавливаем Samba:
sud apt-get install samba samba-common system-config-samba
Если Вы ставили терминальный сервер поверх десктопной версии Ubuntu, следующие два пункта можете пропустить, если ставили поверх Ubuntu Server - нужно будет отключить защиту cups-pdf. Иначе невозможно будет изменить каталог назначения для pdf-файлов.
Устанавливаем набор программ для работы с apparmor
sudo apt-get install apparmor-utils
Отключение защиты для модуля usr.sbin.cupsd
sudo aa-complain /etc/apparmor.d/usr.sbin.cupsd
Создаем каталог для печати, который потом сделаем доступным для виндовых клиентов, и делаем его доступным для всех.
sudo mkdir /srv/samba/pdf
sudo chmod -R 2777 /srv/samba/pdf
sudo chown -R root:sambashare /srv/samba/pdf
Далее редактируем файл /etc/cups/cups-pdf.conf
Для начала сохраняем резервную копию.
sudo cp /etc/cups/cups-pdf.conf /etc/cups/cups-pdf.conf.bak
Редактируем файл настроек cups-pdf
sudo nano /etc/cups/cups-pdf.conf
Далее в файле меняем опции:
Out /srv/samba/pdf/${USER}
Label 2
AnonUMask 0000
UserUMask 0000
Сохраняем файл и рестартуем cups.
sudo service cups restart
Далее Пуск->Настройки-Samba (У меня XFCE4)
Поскольку каталог будет мониториться программой, видимость предоставлять не обязательно, и даже не желательно.
sudo sevice smbd restart
Все, на этом настройка линуксовой части закончена. Переходим к настройке винды.
Рекомендация: Все файлы, которые вы качаете из интернета проверяйте на virustotal.com . Это не защитит на 100 %, но вероятность заражения резко уменьшается.
В качестве виндового сервера печати я использовал "старушку" с win XP. Не принципиально. Можно выбрать любую клиентскую машину и поставить все на нее.
Ставим на нее все сетевые принтеры всех пользователей.
Устанавливаем Foxit Reader. Foxit Reader должен быть версии не ниже 2.3. Именно старую версию я рекомендую использовать, потому что она меньше и быстрее. Вобщем, yandex в помощь.
Качаем архив old.viptextil.ru/Admin/PdfPrint/PdfPrint.zip
Программа портабельная. Распаковываем в какую нибудь папку.
Настройка программы сводится к редактированию двух INI-файлов.
Редактируем PdfPrint.ini
# BackupDir - если указать каталог, то после распечатки файлы будут переноситься в этот каталог (для отчетности)
# если BackupDir оставить пустым - файлы после распечатки будут удаляться.
BackupDir=
# PdfRootDir - каталог, в который сохраняет файлы cups-pdf, но только снаружи (с точки зрения винды)
# Если адрес линуксового сервера статический - рекомендую ссылаться на сервер через его IP
PdfRootDir=\\192.168.1.100\pdf\
# Маска файлов, создаваемых cups-pdf (именно такая получается при опции Label 2 в cups-pdf.conf)
PdfMask=job_*.pdf
# Принтер по-умолчанию, именно на него будут отправляться все задания от новых пользователей и пользователей не указанных в UserPrinter.ini
DefaultPrinter=HP LaserJet P2050 Series PCL6
# Задержка между опросами PdfRootDir в секундах. Задержка отправки задания печати на принтер будет составлять 2-3 LoopDelaySec
LoopDelaySec=3
# Путь к программе FoxitReader.exe
FoxitReader=c:\Program Files\Foxit Software\Foxit Reader\FoxitReader.exe
#текущее название программы mailsend
MailSend=mailsend1.18.exe
# настройки для gmail.com . Отправка почты осуществляется с ящика googlename@gmail.com
#MailParam= -enc-type "7bit" -sub "PdfPrint ServName" -f googlename@gmail.com -ssl -port 465 -smtp smtp.gmail.com -auth -user googlename -pass "GoogleUserPass"
# настройки для mail.ru . Отправка почты осуществляется с ящика mailuser@mail.ru
#MailParam= -enc-type "7bit" -sub "PdfPrint ServName" -f mailuser@mail.ru -ssl -port 465 -smtp smtp.mail.ru -auth -user mailuser@mail.ru -pass "MailUserPass"
#настройки yandex.ru. Отправка почты осуществляется с ящика yandexuser@yandex.ru
MailParam= -enc-type "7bit" -sub "PdfPrint ServName" -f yandexuser@yandex.ru -ssl -port 465 -smtp smtp.yandex.ru -auth -user yandexuser@yandex.ru -pass "YandexUserPass"
# Примерный Размер лог-файла в килобайтах. Если 0 - лог файл не создается.
LogSizeKB=1000
# LogLevel 0,1,2,3 default 1. 0=no log, 1=status, 2=error, 3=debug
LogLevel=3
Редактируем файл UserPrinter.ini
User1=HP LaserJet P2050 Series PCL6
User2=user2@usermail.ru
User3=user3@usergmail.com
User4=HP LaserJet Professional M1212nf MFP
User5=HP LaserJet Professional M1212nf MF
Функционал программы, по отправке файлов на электронную почту описан во второй части статьи ubuntu + 1Cv8 + winXP-7-8. Печать на электронную почту.
User1, User2... User5 это пользователи терминального (и не только) сервера Ubuntu, которые печатают на принтер cups-pdf. Если печатает пользователь, не указанный в файле UserPrinter.ini, его файл буде отправлен на принтер по-умолчанию (указан в файле PdfPrint.ini)
Чтобы было меньше ошибок, рекомендую копировать названия принтеров:
На принтере клик правой кнопкой мыши, свойства
После того, как все настроено, нужно проверить все в "ручном режиме".
На Ubuntu Server, напечатаем какой-нибудь документ на принтер PDF.
Из под винды провинды проверим, что файл был создан \\192.168.1.100\pdf\User1
Пуск->Выполнить
Находим файл, который только что распечатали, и САМОЕ ГЛАВНОЕ пробуем его удалить.
Если файл защищен от записи, проверяем права доступа на папку и разрешение на запись в Samba.
До тех пор, пока файл не будет нормально удаляться из-под винды, программу PdfPrint.exe запускать нельзя, иначе принтер будет печатать это задание постоянно.
Если все удаляется - запускаем программу PdfPrint.exe и она начинает Работать. Для начала очень полезно просмотреть LOG программы (файл PdfPrint.log в каталоге программы PdfPrint).
Внимание, программа PdfPrint не отбражается в Taskbar, поэтому вырубить ее можно только через диспетчер задач (процесс PdfPrint.exe)
Напомню, что на новых операционках (7-10) программа, помещенная в автозагрузку может не запускаться автоматически, если не отключен UAC. Возможно программу можно запускать через планировщик задач.
Со временем, если программа будет кому-нибудь интересна, оформлю ее в виде windows-службы.