Универсальное решение для печати на сетевые принтеры под Windows 7/Vista/2003/2008

    Очень часто возникают проблемы при сетевой печати на принтеры, подключенные
    например, к компьютеру с Windows XP на компьютере с установленной ОС Window 7,ненаVista,2003,2008

    Суть проблемы часто заключается в том, что под эти «современные» системы производители
    «устаревших» моделей принтеров не удосуживаются выпускать драйверы.

    Вот и у меня сложилась такая ситуация:

    Знакомый попросил настроить печать в офисе со свежекупленного ноутбука.

    1. Конечно же — ноутбук был с операционной Windows 7
    2. Конечно же — Home (см. ниже в чем проблема)
    3. Конечно же — она (система) была 64-х разрядной.
    4. Конечно же — принтеры в оффисе были не новые: HP1320 и Canon MFxxxx
    5. Конечно же — принтеры были подключены и «расшарены» на машинках с WinXP.
    6. И никто не будет менять структуру сети ради одного ноутбука
    Как же я решил проблему?

    Сначала я пошел по неправильному пути:
    Скачивал и пытался установить драйверы с официальных сайтов — не тут-то было:
    Компания Canon вообще мало для каких моделей поставляет драйверы под 64-х разрядные системы.
    Про МФУ вообще молчу.
    Для серии MFxxxx рекомендовали костыль — использовать драйверы от серии MF57xx. Попробовал — система
    показывает что драйвер подписан, но отказыватеся устанавливать, ссылаясь на то что он не подписан.
    Брр, бред. Установку неподписанных дров на Home разрешит нельзя (нет gpedit.msc). Тьфу.

    Компания HP вроде бы и предоставила драйвер PCL5 для модели HP1320 — но — не заработало.
    При попытке установки выдавались невразумительные ошибки, гуглёж которых находил
    таких же бедолаг как и я.

    Особенно улыбнул один комментарий на форуме (не помню точно где, но по-моему на сайте HP):
    «HP1320 — бизнес-модель, поэтому мы не предоставляем поддержки по телефону в выходные дни»

    Кстати, мошенники лезут во все щели как тараканы: вы всегда можете «нагуглить» и скачать ЛЮБОЙ
    драйвер любого принтера под любую систему. Но результат будет конечно же, не тот, что ожидается.

    Также «гуглёж» открыл мне еще один страшный факт: ДО СИХ ПОР в серверных операционках известной
    компании ЕСТЬ проблемы с подсистемой печати в терминальном режиме. И даже сторонние
    решения не решают проблем окончательно.

    «Хватит заниматья ерундой» — подумал я и сделал так:

    1. Скачал виртуальный Free PDF Printer с сайта www.bullzip.com. Их (PDF-принтеров) вообще много, просто мой выбор пал на него по следующим причинам:
    а) данный работает под 64х разрядными системами
    б) бесплатный (в принципе не жалко было бы отдать и ~20 баксов, НО не отдавать же их
    за КАЖДЫЙ компьютер с Windows 7 64x!)
    в) он нашелся первым :)
    2. Установил виртуальный PDF-принтер и настроил его (C:\Program Files\Bullzip\PDF Printer\gui.exe) так, чтобы пользователю не выдавалось никаких диалоговых окон, а в папке \\compxp\printer1\ создавался файл .pdf
    3. На компьютере compxp установил Foxit Reader «расшарил» папочку printer1 и поместил в автозагрузку простенький vbs-скрипт:

    Copy Source | Copy HTML
    1. 'On Error Resume Next
    2. 'Автоматическая печать PDF-файлов, появляющихся в определенной папке
    3. 'Глобальные переменные
    4. Set gFSO = CreateObject("Scripting.FileSystemObject")
    5. Set gShell = CreateObject("WScript.Shell")
    6. 'Папка, в которой скрипт ждет PDF-файлы (к этой папке (папкам) д.б. дан доступ по сети)
    7. gWatchFolder = "E:\master\printer\"
    8. 'Основной цикл
    9. While true
    10.  Set lFolder = gFSO.GetFolder(gWatchFolder)
    11.  Set lFiles = lFolder.Files
    12.  For Each lFile In lFiles
    13.   PrintFile(gWatchFolder & lFile.Name)
    14.  Next
    15.  WScript.Sleep(1)
    16. WEnd
    17.  
    18. 'Функция печати конкретного pdf-файла
    19. Sub PrintFile(pFileName)
    20.  'Ждем некоторе время (пока файл до конца запишется) 
    21.  WScript.Sleep(3)
    22.  'msgbox(pFileName)
    23.  'Мы (больше) не боимся пробелов :Р
    24.  s = """E:\master\foxit\Foxit Reader.exe"" /p """ & pFileName & """"
    25.  'msgbox (s)
    26.  Call gShell.Run(s,0,true)
    27.  gFSO.DeleteFile(pFileName)
    28.  If gFSO.FileExists(pFileName) Then
    29.   'Мало ли чего может случиться, лучше пусть у Иван Иваныча перестанет печатать, чем один файл много раз уйдет на принтер
    30.   'msgbox("Не удалось удалить файл " & pFileName & "! Позвоните Василию по т. 123-456)
    31.   WScript.Quit
    32.  'Else
    33.   'Пока не реализовано
    34.   'ToLog("Файл " & lFileName & " удален.")
    35.  End If
    36. End sub


    За скрипт прошу не пинать — писался быстро и чтоб заработало.

    Вуаля:
    Пользователь просто нажимает в программе кнопку «Печать» — и через минуту забирает из принтера документ.
    Виртуальных принтеров можно установить несколько и обозвать их произвольно. Главное — при переименовании принтера настройки нужно производить заново.

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

    P.S. Те, кто ненавидит adobe могут сделать связку bullzip->BMP(JPG)->irfan — но возникнут проблемы с ландшафтной ориентацией (надо будет в скрипте определять ориентацию).
    Поделиться публикацией
    Похожие публикации
    Реклама помогает поддерживать и развивать наши сервисы

    Подробнее
    Реклама
    Комментарии 30
    • +1
      >MFxxxx
      у меня стоит mf4018 и дрова етсь и на 2008р2 и на 7ку и на ХП… вообще без проблем.
      У HP вообще существуют универсальные драйвера для большинства принтеров.
      • 0
        Единственный минус — с их сайта очень тяжело скачивать драйвера.
        • +3
          т.е. проделать вышеописанное — проще?
          • 0
            Если драйверы есть — не проще. Мой комментарий о другом.
            Я вынужден зачастую (HP) использовать устаревшие драйвера с диска, идущего в комплекте, потому что новая версия тянется с сайта в течении «пяти дней». И это во времена высокоскоростных интернетов.
            Из таких же компаний, не тянущих нагрузок на сервера, еще могу привести в пример realtek, но благо их драйверы распространены больше чем HP.
    • 0
      Вопрос на счет системы протоколирования, как можно понять какой пользователь что напечатал(при условии что все пользователи в AD)?
      • 0
        я ковырялся пару дней, не нашел ничего похожего…
        в настройках принтера есть пункт сохранять документ после печати, но скорее всего принтеры должны работать через принтсервер винды…
        • 0
          дурацкий вариант, но очень легкодоступный — завести разные папки для разных юзеров.
          а еще у документов бывает владелец, но тут разные операционки и разные ФС могут сыграть злую шутку.
          • 0
            Первое, что приходит на ум — каждый юзер складывает из в свою папку \\server\user1,\\server\ivanov_vv и т.п.
          • 0
            Намного приятнее устанавливать 32х битные драйвера на win2008r2(которая только 64х)… вот я прыгал с бубном вокруг сервера…
            • 0
              Не понимаю, о чем весь сыр-бор…
              Для Hp, например, универсальные дрова: h20000.www2.hp.com/bizsupport/TechSupport/SoftwareIndex.jsp?lang=en&cc=us&prodNameId=4157320&prodTypeId=18972&prodSeriesId=503548&swLang=8&taskId=135&swEnvOID=4063
              Для кэнона тоже: software.canon-europe.com/software/0040117.asp?model=
              • 0
                Есть-то есть, но Вы лично пробовали их ставить в такой связке? (когда принтер НЕ по USB воткнут напрямую в комп, а подключен к XP и расшарен?)
                • 0
                  Зачастую достаточно подключить напрямую в комп, поставить драйверы, а затем отключить и настроить уже как сетевой. Если физически невозможно — то да, увы.
                  • +1
                    Не увы. Необязательно подключать принтер к компу — достаточно указать, что он подключен к LPT, либо какому-нибудь виртуальному порту, после чего прекрасно и сетевой встанет.
                  • +1
                    Я так настроил на работе принтер себе. Исключительно по сети.
                    • +1
                      Я пробовал и все получилось. Загвоздка в том, что на обоих машинах нужно ставить UPD
                  • +1
                    Была похожая проблема. Правда принтер не работал под Linux, но не суть. Решилось так. На компе с принтером с помощью ghostscript создал виртуальный принтер и перенаправил задания с него на реальный. В настройках виртуального принтера можно выбрать любую модель. На компьюетере без принтера просто выбираем ту же модель и указываем, что принтер на другом компе.

                    Желательно выбирать PS принтер, с ними проблем должно быть меньше.

                    Вот ссылка с мануалом: www.stat.tamu.edu/~henrik/GSPSprinter/GSPSprinter.html
                    • +2
                      Может я буду прозаиче, но зачем было так изголяться, если можно прописать что-то типа этого в батник с запуском от имени администратора и забыть про проблемы Net Use LPT1: \\PrintServer\Hp2100 /Yes?
                      Предварительно, конечно, поставив принтер на эту машину, но на порт ЛПТ, который виртуальный.
                      • 0
                        Я тоже так делаю, единственное вменяемое универсальное решение, когда уже никакие дрова не подошли. Предварительно принтер устанавливать не нужно, наоборот лучше сначала «создать» порт, а потом установить на него принтер.
                      • 0
                        Сетевому расшаренному принтеру можно указывать альтернативные драйвера в Microsoft Windows XP. Т.е. если вы смогли универсальным драйвером заставить работать принтер по USB, то достаточно его положить на машину, с которой производится расшаривание, в качестве альтернативных для этой операционки.
                        • 0
                          Сталкивался с такой проблемой. Старый факс который подключен к windows xp и ноут с win 7.
                          Win 7 дравйвера устанавливаются, но при печати вылетает explorer.exe.
                          Решение пришло с помошью утилиты Printer Driver Generator от Novell
                          На windows xp с помошью этой проги сгенерировал драйвера для win 7. Установил их на win 7 и все заработало.
                          • 0
                            Для ненавистников PDF есть XPS, который «как-бы» понативнее будет для винды
                            • 0
                              Была подобная проблема, решилась использованием XP Mode.
                              • –1
                                А разве драйвера могут работать в режиме совместимости? Вы точно не путаете «софт от производителя» и драйвер принтера? :)
                                • 0
                                  можно поподробнее?
                                • 0
                                  Спасибо, настроил, работает на ура.
                                  Правда проблема была не в х64, но способ подошёл и для моей ситуации:)
                                  • +1
                                    Установку неподписанных дров на Home разрешит нельзя (нет gpedit.msc).

                                    Не совсем так. На Windows 7 Home Basic x64 ставил неподписанные драйверы при помощи Driver Signature Enforcement Overrider. Но, согласен, это решение тоже не лишено костылей.
                                    • +1
                                      Тоже сталкивался с такой проблемой. Если бы вы погуглили чуть подольше нашли бы решение попроще в реализации и побогаче в возможностях :)
                                      PdfCreator
                                      без скриптов, просто сразу перенаправляет на печать все полученные документы, имеется версия под х64, на сервера и рабочие станции ставится одинаково приятно
                                      • 0
                                        автор, будь проще :)))
                                        • 0
                                          Несколько раз сталкивался на работе с непонятной проблемой. Она возникала на горячо любимой Windows Vista. А именно: приходит новый комп, ставится в отдел, и по просьбе подключить машину к принтеру, который располагается на WinXP происходит ошибка и служба печати останавливается.
                                          Как решалось? Гуглил очень долго на сию тему, но к сожалению решения так и не отыскал.
                                          Во всех 3-х (а может и 4-х) случаях все решалось само собой на N-ый раз установки принтера. Закономерность не нашел. При чем соседний новый комп (Аналогичной конфигурации и с Windows Vista) подключался к этому принтеру на ура.
                                          При работе с WIndows 7 не замечал проблем с подключением к принтерам.

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