ubuntu + 1Cv8 + winXP-7-8. Решение проблемы с печатью на расшаренные принтеры клиентов

29.04.16

База данных - Инструменты администратора БД

Принтеров и операционок много, драйверов под Ubuntu на всех не хватает.
Возникла идея печатать cups-PDF, в расшаренную по smb папку. Написать программу под винду, которая будет мониторить эту папку и в зависимости от пользователя печатать *.pdf на принтер, указанный для данного пользователя. Текущая версия программы 1.3

Часть первая. Продолжение данной статьи читайте 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)

Samba1

Поскольку каталог будет мониториться программой, видимость предоставлять не обязательно, и даже не желательно.

Samba2

 sudo sevice smbd restart

 Все, на этом настройка линуксовой части закончена. Переходим к настройке винды.

 


 

Рекомендация: Все файлы, которые вы качаете из интернета проверяйте на virustotal.com . Это не защитит на 100 %, но вероятность заражения резко уменьшается. 

 

В качестве виндового сервера печати я использовал "старушку" с win XP. Не принципиально. Можно выбрать любую клиентскую машину и поставить все на нее.

Ставим на нее все сетевые принтеры всех пользователей.

Printer1

 

Устанавливаем 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)

Чтобы было меньше ошибок, рекомендую копировать названия принтеров:

На принтере клик правой кнопкой мыши, свойства

Printer2

 

После того, как все настроено, нужно проверить все в "ручном режиме".

На 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-службы.

Linux Ubuntu Terminal server Windows cups-pdf printer pdf Foxit Reader

См. также

Автоподбор ролей для профилей и групп доступа в любых типовых базах 1С УТ 11, КА 2, ERP2, Розница 2/3, УНФ 16/3, БП 3, ЗУП 3 и подобных (УФ, Платформа 8.3.14+)

Инструменты администратора БД Роли и права 8.3.14 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Документооборот 1С:Зарплата и кадры государственного учреждения 3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Роли… Вы тратите много времени и сил на подбор ролей среди около 2400 в ERP или 1500 в Рознице 2, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 15.12.2023, версия 1.1.

12000 руб.

06.12.2023    2977    13    1    

34

SALE! 20%

Infostart УДиФ: Управление данными и формами

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

10000 8000 руб.

10.11.2023    3537    11    1    

34

SALE! 30%

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

3600 2520 руб.

14.01.2013    177749    1073    0    

849

Ускоренное проведение документов (x4), устранение ошибок 60/62 счетов и зачет авансов (Бухгалтерия 3.0)

Закрытие периода Инструменты администратора БД Корректировка данных Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).

14400 руб.

29.04.2020    27380    79    146    

59

Система хранения присоединенных файлов в томах на диске

Инструменты администратора БД Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием Платные (руб)

Конфигурация Комплексная автоматизация 1.1 (и УПП 1.3 тоже) хранит файлы и изображения в справочнике Хранилище дополнительной информации в реквизите Хранилище типа ХранилищеЗначений. Та же история с ВложениямиЭлектроннойПочты. Но при этом присоединенные файлы в Электронном документообороте хранит в томах на диске. Эта доработка позволяет использовать стандартный механизм хранения файлов, изображений и вложений электронных писем в томах на диске. При этом можно разделить тома хранения по объектам конфигурации.

4200 руб.

10.11.2015    61319    88    59    

73

"Менеджер потоков 2.1": УПП: "Восстановление партий"

Инструменты администратора БД Платформа 1С v8.3 1С:Управление производственным предприятием Россия Бухгалтерский учет Управленческий учет Платные (руб)

Как оптимизировать то, что, считалось, не поддается оптимизации? Как повысить доступность базы данных? Как проводить самую «времяемкую» операцию не по паре раз в неделю, а по несколько раз в день*? Ответ есть!

20000 руб.

12.09.2019    11746    5    9    

7

Брандмауэр для сервера 1С Предприятие 8 - внешнее управление сеансами

Инструменты администратора БД Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Управление возможностью начала и возобновления сеансов пользователей по различным условиям, ограничение общего числа возможных сеансов для работы с информационной базой, резервирование возможности работы с информационной базой определенных польззователей, запрет запуска нескольких сеансов для пользователя, журнализация событий начала (возобновления) и завершения (гибернации) сеансов, ведение списка активных сеансов для информационных баз кластера серверов

3600 руб.

06.02.2017    31111    31    18    

47

Хранилище файлов на SQL

Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Управленческий учет Платные (руб)

Привязка файлов / сканов к объектам 1С с сохранением их на SQL-сервере

12000 руб.

09.10.2019    10986    5    8    

9
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. kns77 101 06.02.16 20:59 Сейчас в теме
2. viptextil 41 08.02.16 09:37 Сейчас в теме
(1) kns77, Спасибо, идея, видимо, витала в воздухе.
3. Demonster 10.02.16 11:30 Сейчас в теме
Велосипед в кубе. Что мешает поставить принт-серверы и печатать напрямую?

В статье не указаны подводные камни этого "изобретения":
1. Компьютеры с Windows должны быть членами домена или иметь одну и ту же учетную запись, указанную в ubuntu.
2. Сможет ли кто-то после Вас это решение поддерживать? Вы его задокументировали и вместе с исходниками отправили своему руководителю/работодателю?
Или это специально сделано, чтобы не уволили, а если уволят - то будут кланятся?
Подсчитайте время, потраченное на реализацию и установку этого "решения" и сравните со стоимостью самого простого принт-сервера.

P.S. У Вас в статье упоминаются принтеры HP - драйвера на linux есть на все модели. Единственное оправдание этого велосипеда - какой-нибудь GDI принтер типа Canon, Samsung и т.п., под который нет драйвера на linux. Но я бы в этом случае убедил бы руководство купить б/у HP, а эти принтеры продать как можно скорее.
4. viptextil 41 10.02.16 18:35 Сейчас в теме
(3)Demonster, спасибо за отзыв.
Что мешает поставить принт-серверы и печатать напрямую?
Отсутствие нескольких принтсерверов.
1. Компьютеры с Windows должны быть членами домена или иметь одну и ту же учетную запись, указанную в ubuntu.
Только один компьютер (на котором размещена PdfPrint должен иметь учетную запись ubuntu Доступ к принтерам клиентов идет уже с него. При подключении принтеров пароли можно запоминать.
2. Сможет ли кто-то после Вас это решение поддерживать? Вы его задокументировали и вместе с исходниками отправили своему руководителю/работодателю?
Именно это я и сделал, опубликовав статью на популярном сервисе.
Подсчитайте время, потраченное на реализацию и установку этого "решения" и сравните со стоимостью самого простого принт-сервера.
Развертывание программы занимает час-полтора. Программу я писал в рабочее время. Я хороший администратор, свободного времени у меня много. Для фирмы это не стоит ничего.
P.S. У Вас в статье упоминаются принтеры HP - драйвера на linux есть на все модели.
У меня складывается ощущение, что статью читали Вы не очень внимательно ;-)
Единственное оправдание этого велосипеда - какой-нибудь GDI принтер типа Canon, Samsung и т.п., под который нет драйвера на linux. Но я бы в этом случае убедил бы руководство купить б/у HP,
Фирма развивалась постепенно. У меня большой зоопарк принтеров В основном Canon. Именно после попыток их настроить я и написал программу.
Но я бы в этом случае убедил бы руководство купить б/у HP, а эти принтеры продать как можно скорее.
В моем городе не найти 10 Б/У принтеров HP.
5. Ruvim 07.04.16 05:32 Сейчас в теме
Доброго времени суток. Попробовал данную идею реализовать, но дело в том что pdf файлы кидаются в папку по имени терминального *user*, а не в папку pdf. Соответственно ничего не печатается. Если в самбе указать путь /srv/samba/pdf*user* то все работает. Что я сделал не так?
viptextil; +1 Ответить
6. viptextil 41 07.04.16 10:52 Сейчас в теме
(5) Ruvim, Все так и должно быть.
Допустим, у вас пользователь user_buh
Тогда файлы должны появляться в папке /srv/samba/pdf/user_buh

На виндовой машине в конфигурационном файле UserPrinter.ini должна быть запись
user_buh=Название_Вашего_Принтера.

Ну, и желательно посмотреть лог-файл PdfPrint.log в каталоге виндовой программы.

Если есть возможность, киньте сюда от последней записи " ### Start PdfPrint"
7. Ruvim 11.04.16 04:39 Сейчас в теме
Дело в том что папки у меня создаются не в pdf, а рядом

(6) viptextil, 20160411-103615 ### Start PdfPrint v1.2 freeware © viptextil.ru 2016
20160411-103615 BackupDir=
20160411-103615 PdfRootDir=\\192.168.2.117\pdfterm1
20160411-103615 PdfMask=job_*.pdf
20160411-103615 PdfRegMask=job_.*\.pdf$
20160411-103615 DefaultPrinter=HP Universal Printing PCL 5
20160411-103615 FoxitReader=c:\Progra~2\Foxits~1\Foxitr~1\Foxitr~1.exe
20160411-103615 LogSizeKB= 1000
20160411-103615 LoopDelaySec= 3
20160411-103615 LogLevel= 3
20160411-103615 User=term1, Printer=HP Universal Printing PCL 5
20160411-103615 User=pdfdkmc, Printer=HP Universal Printing PCL 5
Прикрепленные файлы:
8. Ruvim 11.04.16 05:50 Сейчас в теме
Разобрался, в файле cups-pdf.conf по вышеприведенной инструкции нужно поменять опции Out /srv/samba/pdf${USER}, вот когда так прописать то пользовательские папки будут появляется около основной папки pdf, поменял на Out /srv/samba/pdf/pdf${USER}, папки пользователей стали создаваться в папке pdf (\\192.168.2.117\pdf\pdfterm1) и все заработало. Спасибо.

И еще такой вопрос, у нас работа в браузере, ведется, вот при подключении через RDP страницы пролистываются с торможением, есть ли способ убыстрить как-то.
9. viptextil 41 11.04.16 09:06 Сейчас в теме
(8) Ruvim, Спасибо, мой косяк, пропустил слэш
опцию следует читать как Out /srv/samba/pdf/${USER}

Сейчас исправлю в тексте.

По-поводу браузера ничего сказать не могу. У меня работает так же как на локальной машине. Возможно что-то с драйверами видеокарты.
11. Ruvim 11.04.16 09:30 Сейчас в теме
(9) viptextil, Спасибо вам большое, за такие понятные инструкции, честно говоря я первый раз по вашей статье установил Ubuntu и настроил терминал. Все понятно. Сделал с первого раза. И еще один вопрос, правда по статье установка Ubuntu там выписали "но в терминале возникли проблемы с переключением языков клавиатуры. Для решения редактируем файл /etc/X11/Xsession" Проблема в том, что пользователи при отключении не выходят из системы, а просто закрывают RDP и при повторном подключении, язык ввода уже не переключается. С этим что-то можно сделать?
12. viptextil 41 11.04.16 09:43 Сейчас в теме
(11) Ruvim, Спасибо, конечно, но статья по установке терминального сервера не моя, а уважаемого
neomatrix, спасибо ему за это. Я тоже не решил проблему с русским языком, поэтому в панели быстрого запуска поставил кнопочку "Рус/лат", по которой выполняется команда setxkbmap -layout "us,ru" -model "pc105" -option "grp:ctrl_shift_toggle,grp_led:scroll" и объяснил бухгалтерии, что ее нужно нажимать, когда перестает переключаться язык.

Но это к теме не относится, это нужно обсуждать в комментах к установке терминального сервера.
10. viptextil 41 11.04.16 09:27 Сейчас в теме
(8) Ruvim, Измените опцию в файле /etc/cups/cups-pdf.conf
на Out /srv/samba/pdf/${USER}

в файле PdfPrint.ini задайте
PdfRootDir=\\192.168.2.117\pdf

в файле UserPrinter.ini задайте
term1=Printer=HP Universal Printing PCL 5
dkmc=HP Universal Printing PCL 5
Оставьте свое сообщение