Очень часто возникают проблемы при сетевой печати на принтеры, подключенные
например, к компьютеру с 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 — но возникнут проблемы с ландшафтной ориентацией (надо будет в скрипте определять ориентацию).