В интернете есть вариант решения такого вопроса. Предлагают печатать на виртуальный PostScript-принтер, который будет перенаправлять задания на реальный. В моём случае это решение поросло огромным количеством ошибок в работе системы печати. Пришлось искать другой способ.
Схема такая:
- Печатать на pdf-принтер, который сохранит документ в сетевую папку.
- На стороне сервера печати запустить скрипт, который будет все pdf-документы из сетевой папки отправлять на принтер.
Выбрал бесплатный PDF-принтер — dopdf. Устанавливается без каких-либо сложностей. При печати открывается маленькое окно с выбором имени pdf-файла. Ставим галочку «Всегда использовать эту папку» и снимаем «Открыть PDF».
Для печати pdf-файлов скачиваем и устанавливаем на принт-серверной стороне бесплатный PDF-ридер Foxit Reader. С его помощью возможна печать командой
"c:\Program Files\Foxit Software\Foxit Reader\Foxit Reader.exe" /p <имя pdf-файла>
Ну и наконец пишем и компилируем autoit скрипт:
;Автоматическая печать PDF-файлов, появляющихся в определенной папке
;Папка, в которой скрипт ждет PDF-файлы (к этой папке (папкам) д.б. дан доступ по сети)
$gWatchFolder = "o:\pdfPrint\"
;Основной цикл
While true
Local $search = FileFindFirstFile($gWatchFolder & "*.pdf")
If @error Or ($search = -1) Then ContinueLoop
Local $file = FileFindNextFile($search)
PrintFile($gWatchFolder & $file)
Sleep(1000)
WEnd
;Функция печати конкретного pdf-файла
Func PrintFile($pFileName)
$pNewFileName = StringReplace( $pFileName, ".pdf", "_.pdf")
;Ищем Фоксит ридер
If FileExists("c:\Program Files\Foxit Software\Foxit Reader\Foxit Reader.exe") Then
$s = """c:\Program Files\Foxit Software\Foxit Reader\Foxit Reader.exe"" /p """ & $pNewFileName & """"
ElseIf FileExists("c:\Program Files (x86)\Foxit Software\Foxit Reader\Foxit Reader.exe") Then
$s = """c:\Program Files (x86)\Foxit Software\Foxit Reader\Foxit Reader.exe"" /p """ & $pNewFileName & """"
Else
MsgBox(4096, "Не установлена программа Foxit Reader!", "Foxit Reader.exe does NOT exists")
Exit
EndIf
;Попытаемся переимновать файл, чтобы определить, дозаписан ли он до конца.
If FileMove($pFileName, $pNewFileName) Then
;запускаем печать pdf через Фоксит Ридер и ждём, когда процесс завершится
Local $PID = Run($s)
ProcessWaitClose($PID)
;удаляем файл, чтобы он повторно не печатался
If Not FileDelete($pNewFileName) Then
msgbox(1,"","Не удалось удалить файл " & $pNewFileName & " ! Зовите системного администратора!")
Exit
EndIf
EndIf
EndFunc
Осталось положить скомпилированный exe-файл в папочку Автозагрузка и наслаждаться печатью.
Комментарии (32)
iig
25.10.2023 07:04+3Автор несмог в канонический redmon+ghostscript?
Javian
25.10.2023 07:04+2У меня это работало крайне нестабильно. Получилось надежно через PDFCreator.
patyupin
25.10.2023 07:04+1https://www.raymond.pro/poleznye-programmy/pecataem-s-apple-imac-na-windows-7-printere
Мой опыт. Может пригодится
alexyr
25.10.2023 07:04Для принтеров поддерживающих "raw print" можно просто питоном послать файл через socket. Я себе такой скрипт на сервере делал, чтобы печатать закинутые в дропбокс документы
atshaman
25.10.2023 07:04Какой-то некрофилии псто. Windows 7, принтер, который не поддерживает windows 7... зачем оно?!
Javian
25.10.2023 07:04+4Принтер сделан в те времена, когда не могли правильно рассчитать срок запланированного устаревания, поэтому пришлось убивать драйвера, а сам принтер переживет и Win12.
atshaman
25.10.2023 07:04Угу. Уйдет в небытие вместе с бородатым одмином-в-свитере, заправляющим катридж в перерывах между партиями в халву, устранением замятий в бухгалтерском факсе и подключением нового чайника, да.
vis_inet
25.10.2023 07:04+2Если люди до сих используют его, значит в этом есть какой-то смысл.
atshaman
25.10.2023 07:04Не поспоришь. Но "какой именно" - от меня ускользает.
Radish
25.10.2023 07:04+3Элементарный. Вот железяка, и она работает без проблем. С какой стати кто-то решил, что я должен её поменять на какую-то другую?
atshaman
25.10.2023 07:04Ну, я предполагаю, что обеспечение этой "без проблем" уже обошлось и еще обходится сильно дороже замены устройства и\или установки принт-сервера с CUPS'ом. Нет, если время сотрудников ничего не стоит, а от наличия\отсутствия печати ничего не зависит - то оно и норм, но тогда стартовый вопрос - "Зачем оно?"
Palesandr
25.10.2023 07:04+1я работал в одной конторе, где был струйный принтер из периода динозавров. на нём печатали данные для ПТС. это как один из примеров.
atshaman
25.10.2023 07:04-1Ну да. А я застал времена и видел места, где-и-когда бланки заполняли от руки. Еще и, если мне память не изменяет - чернилами. И вот предполагаю я, что те перья и те чернильницы нихрена еще не выработали свой ресурс...
Хотя нет. Шарик на пере - вполне себе стирается о бумагу. Надо посмотреть на хабре статью, вдруг нашелся умелец, который подробно описал процедуру замены платиново-иридиевого (Или из чего оно там?) шарика в домашних условиях?
Javian
25.10.2023 07:04Мне его бывший пользователь недавно сказал, что ему нравилось, что "принтер голосом говорил", что бумага закончилась или замялась и он знал, что надо исправить. А с сетевыми МФУ он не знает почему не печатает.
atshaman
25.10.2023 07:04+1Угу. А меня он как-то всерьёз шуганул, когда терминальник с виндой при попытке печати человечьим голосом заговорил. Из гарантированно пустой и запертой серверной типа "кладовка". Были времена, да :)
Но давно.
iig
25.10.2023 07:04+1Вы ,наверное, не представляете, сколько существует железа без поддержки в новых ОС. Принтеры - мизер (хотя предложений по заправке картриджей дофига - значит это кому-то нужно).
atshaman
25.10.2023 07:04+1Оттож! И в ряде случаев использование этого железа вместе с тем софтом, с которым оно шло - более, чем оправдано. У меня на проектах в АСУТП все еще XP всплывает, в лабораториях с ЛИМСом тоже немало ВСЯКОГО - по старые MAC'и включительно. Менять это все - дорого, высокорискованно и местами малоосмысленно, нивапрос.
Но блин, даже не "офисный" а "домашний" принтер к этому явно не относится.
Javian
25.10.2023 07:04Это офисный принтер времен миллениума. Домой такое позволить себе не могли.
atshaman
25.10.2023 07:04Охтыж божечки-кошечки... Не знаю, кто, что, когда и где "мог", а кто, что, когда и где "не мог" себе позволить, а canon делал модель для домашнего использования путем отламывания от hp 11ой серии (С этим, кстати, связана длинная жизнь модели - офисные HP'шки получились очень удачными и шли очень большим тиражом, так что долгое время проблем с запчастями\расходкой не было) большей части управляющей электроники с переносом всего на сторону ОС\драйвера - с чем, а вовсе не с мифическим "заговором производителя" связано отсутствие драйвера - он вышел достаточно сложным и переносить его на новые ОС\архитектуру процессора оказалось дорого и с т.з. производителя бессмысленно.
Javian
25.10.2023 07:04Логичное решение убрать странный сканер в HP LaserJet 1100A. Им можно было пользоваться от безысходности. А то что осталось - офисный принтер с огромным запасом порошка в картридже.
atshaman
25.10.2023 07:04И 32-х битный драйвер, умеющим голосом что-то там говорить на сдачу, ага. К счастью, палка, веревка и банановая кожура помогли превозмочь козни империалистов...
iig
25.10.2023 07:04+1Домашний принтер, на котором печатается 10 листов в месяц. Он еще лет 20 прослужит. Если, конечно, потратить час на несложную манипуляцию (виртуалка с ХП и вот это вот из статьи).
atshaman
25.10.2023 07:04Теоретически оно "час", а практически думаю с неделю работы выползло. За час я, блин, образ ХРюши не найду - а там еще куча подтанцовок с установой pdf-принтеров, настройкой этой вот анлоговнеты на автотулзах, отладкой когда "ой, чтойта? Да, pdf кривой сформировался" или там кто-то принтеры по-перепутал и ждет, бедолага - и время этих "ждунов", которым надо печатать, а не получается - так-то тоже учитывать стоит. А если к этому ни дай б-же еще и человек хотя бы с полста пустить...
Серьёзно - дешевле нормальный принтер купить. Ну или см. выше - при условии бесплатности рабочего времени всех сотрудников и того, что на печать никакие бизнес-процессы кроме "печати реферата сыну-школьнику" не завязаны - оно и норм.
iig
25.10.2023 07:04с неделю работы выползло
Хобби, сэр. Некоторые до сих пор со Спектрумами возятся ;) А тут шанс поковырять систему печати в Windows.
а там еще куча подтанцовок с установой pdf-принтеров
Все эти подтанцовки сделаны энтузиастами 15 лет назад. Загуглить инструкцию и воспроизвести ;)
Прямо аж интересно, почему этот вопрос возник аж в 2023 году ;)
atshaman
25.10.2023 07:04Эм. В стартовом посте: "Исторически сложилось так, что в отделе стоит единственный принтер Canon LBP-1120." - т.е. автор это предлагает как решение _для работы_ - оттуда и все мое недоумение. К хобби-проекту у меня бы претензий не было ровным счетом никаких - т.е. я бы делал по другому, но и так прикольно ).
iig
25.10.2023 07:04+1Ну, может эта статья 15 лет назад написана ;)
И все было прекрасно до тех пор, пока не установили на рабочие машины Windows 7 x64
Для 2023 года это как-то слишком ретро. А так все правильно: появилась проблема и мы ее решили ;)
Stillgray
25.10.2023 07:04А можно ещё использовать триггеры FSRM и не крутить электросчётчик вечным циклом :)
iig
25.10.2023 07:04А в Win XP их завезли?
Я когда-то мониторил папку spooler'а, чтобы ловить момент печати, и оно даже работало ;)
А было бы интересно, если бы это запустили через cups на православном linux. У меня не вышло. Нашел несколько заметок на заброшенных форумах, какие-то пакеты для древних убунтов, но там даже непонятно, работало ли оно у авторов.
atshaman
25.10.2023 07:04+1У меня работало - но не сказать, чтобы хорошо. Примерно как со всеми win-принтерами лотерея была - "переткни 1018 четыре раза по USB для загрузки прошивки и не выключай до страшного суда" - а с каким-нибудь 1020, который вроде те же яйца, вид в профиль - почти без проблем.
MaxStirlits
25.10.2023 07:04Драйвера принтеров обратно совместимы. Можно просто древний драйвер какой нибудь скормить и не париться.
ky0
"Печать на сетевой принтер без драйвер". Идите уж до конца.