Рецепт приготовления Win-принтера для печати из Linux 2 2
Аппаратное обеспечение
Статья была опубликована 1 февраля 2010 года в 00:00, а последний раз правилась 10 февраля 2020 года в 03:31.
Статья была обновлена в феврале 2008 года.
Статья была обновлена в феврале 2008 года. Ее модернизировал Anatoly Akatyev (anatoly.akatyev на master-system dot ru).
Перед нами стоит задача печати документов на Win-принтере (Canon MF3110) из Linux (ALT Linux Desktop 4.0.x; далее — ALD 4). Canon MF3110 подключен (USB-подключение) и настроен на Win-компьютере (Windows XP). На другом компьютере с Linux (стандартная установка ALD 4) настроена Samba. Оба компьютера входят в локальную сеть и видят друг друга.
2. Скачиваем необходимые программы
Для решения поставленной задачи я использовал следующий софт:
- RedMon — Redirection Port Monitor (redmon17.zip [592,7 КБ] с www.cs.wisc.edu/
Этот софт понадобится для настройки виртуального (физически не существующего, но корректно распознаваемого в Linux, например, HP LaserJet 4M Foomatic/Postsript) принтера на Win-компе, на который будем отправлять с Linux-компьютера (через Samba) задания, а он в свою очередь будет их «перенаправлять» (печатать) на реальный Win-принтер (Canon MF3110).
P.S. Не знаю, почему авторы других статей на эту тему рекомендовали дополнительно устанавливать еще и GSView — поставленная задача вполне решается предлагаемым минимумом софта.
3. Устанавливаем программное обеспечение
Здесь все операции выполняются на Windows-компьютере.
- Разворачиваем Redirection Port Monitor redmon17.zip, например, в каталог: c:\redmon
- Выполняем его установку: c:\redmon\setup.exe
- Выполняем установку GhostScript: gs8.61w32.exe. По умолчанию GhostScript устанавливается в c:\Program Files\.
Внимание! Мы установим gs8.61w32.exe в c:\gs\ и далее будем отталкиваться от этого.
4. Устанавливаем виртуальный принтер
Все операции по-прежнему выполняются на Windows-машине.
- Открываем Блокнот (а еще лучше — редактор в Far) и создаем файл настроек параметров c:\gs\mswinpr.rsp для GhostScript, чтобы он мог работать с Win-принтером (Canon MF3110). В него скопируйте (или наберите руками) следующие строки:
Редактировать следует только 1 и последнюю (6-ю) строку. Все остальные строки редактировать не нужно. Можете сделать copy-paste указанных выше строк. Первая строка -Ic:\gs\gs8.61\lib;c:\gs\fonts должна начинаться с дефиса и большой латинской буквы «Ай» (а не «1» или «l»)! Более подробную информацию по этим и другим настройкам можно получить из файлов документации GhostScript: c:\gs\gs8.61\doc\Use.htm и c:\gs\gs8.61\doc\Install.htm
В последней строке следует указать имя вашего принтера. Например, если принтер называется Canon MF3110, то именно это и указываем. Для принтера LBP 810 строка выглядела бы так: -sOutputFile=»%printer%Canon LBP810»
В практике было как минимум 3 случая, когда обходился указыванием \\spool\Canon LBP810.
Ошибка при указании имени принтера приведет к тому, что пользователя на Windows-машине придется постоянно указывать вручную принтер!
- Способ подключения — Локальный принтер. Затем…
- Изготовитель — HP, Принтеры — HP LaserJet 4/4M PostScript. Затем…
- Доступный порт — любой (LPT1: … LPT3:, потом его поменяем на RPT1:). Затем…
- Название принтера — на свой вкус. Затем…
- Напечатать пробную страницу — Нет.
- Нажимаем кнопку Добавить порт…->Тип добавляемого порта: Другой -> Redirected Port.
- В поле Порт указываем RPT1: (Redirected Port).
- Нажимаем кнопку Параметры порта… и в появившемся окне диалога RPT1: Properties определяем:
- В строке Redirect this port to the program: задаем: c:\gs\gs8.61\bin\gswin32c.exe. Именно gswin32c.exe, а не gswin32.exe!
- В строке Arguments for this program are: задаем: @c:\gs\mswinpr.rsp -. Здесь после @c:\gs\mswinpr.rsp обязательно должен идти пробел, а за ним дефис! Иначе ваш реальный принтер распечатает страниц 30 мусора. Ранее файл c:\gs\mswinpr.rsp уже должен быть создан.
- В строке Output: выбираем: Copy temporary file to printer.
- В строке Printer: выбираем свой Windows-принтер (на который будет перенаправлена печать): Canon MF3110.
- В строке Run: выбираем: Hidden (отказываемся от дополнительных всплывающих окон при печати).
- Можно включить флажок Print Errors.
- Можно определить файл лога (на любителя) через кнопку Log File, где в появившемся окне диалога RPT1: Log File Properties установить флажок Log File, а в строке Write standard output to the file: указать: c:\gs\logfile.txt.
Все, с диалогом RPT1: Properties покончено.
- Нажимаем кнопку Очередь… и в появившемся окне диалога Параметры очереди устанавливаем Отключить двусторонний обмен данными. Остальные значения можно оставить без изменения (т.е. Начинать печать после помещения в очередь первой страницы; Формат данных в очереди — RAW).
- Отправить Ctrl+D перед заданием;
- Отправить Ctrl+D после задания.
Остальные параметры можно оставить без изменения.
- Общий ресурс;
- Сетевое имя — HP (или другое на свой вкус).
На этом можно считать, что работа по установке и настройкам виртуального принтера в Windows завершена. Осталось проверить печать через виртуальный принтер.
5. Установка доступа к Windows-принтеру из Linux
Здесь все операции выполняться на Linux-компьютере.
- Если у вас ALT Master/Junior 2.2, тогда просто запустите: # printerdrake. Далее в диалогах укажите имя Windows-компьютера и принтер HP LaserJet 4M Foomatic/Postscript.
- Если у вас ALD 4, тогда еще проще. Можно выполнить, например, из KDE: K -> Принтеры -> Добавить -> Добавить принтер/класс. В окнах диалога Мастера установки принтера задать:
- Принтер SMB (Windows). Далее…
- Далее…
- Рабочая группа — (или кнопка Опрос); выбрать Windows-компьютер и принтер HP. Далее…
- Задать производителя — HP; модель — HP LaserJet 4M. Далее…
- HP LaserJet 4M (Foomatic + Postsript). Далее…
- Далее…
- Далее…
- Далее…
- Имя — HP (или свое). Далее…
- Имя пользователя — root; пароль — **********.
- Отправьте на печать какой-нибудь документ. Все должно работать превосходно!
- Автору Redirection Port Monitor: Russell Lang, Ghostgum Software Pty Ltd., ghostgum.com.au
- Авторам Ghostscript, ghostscript.com.
- Рассылке Community ALT Linux и лично Alex Ogurtsov (aogurtsov@geeksforless.net) и еще Michael Shigorin (mike@altlinux.ru).
- Авторам подобных статей на эту тему: Сеник Миколi (senyk_cw@mail.ru) и Игорю Чумак (zigoor@zmail.ru).
Кажется, перечистил всех 🙂
- Надо признать, что в процессе решения этой задачи я потратил достаточное количество времени. Однако надеюсь на то, что этот документ позволит другим достигнуть желаемого результата гораздо быстрее.
- По личным ощущениям, сравнивая печать на Win-принтере (Canon LBP-810) непосредственно из Win4Lin и через виртуальный HP LaserJet 4M, в последнем случае производительность несколько выше (+ неограниченная возможность прямой печати не только из Windows-приложений в Win4Lin, но и из Linux-программ).
- Меня не покидает уверенность в том, что описанный рецепт на 100% будет работать с любым принтером независимо от способа подключения (USB/LPT).
RedMon — Redirection Port Monitor
Transparent PostScript printing from Windows.
Overview
The RedMon port monitor redirects a special printer port to a program. RedMon is commonly used with Ghostscript and a non-PostScript printer to emulate a PostScript printer. RedMon can be used with Ghostscript as a PDF creator.
RedMon can be used with any program that accepts data on standard input.
Using RedMon you create a redirected printer port. If you connect a Windows printer driver to the redirected printer port, all data sent to the redirected port will be forwarded by RedMon to the standard input of a program. The output of this program can be sent to different printer port, or the program can generate whatever output it desires.
See the RedMon online help for more details.
Download
RedMon version 1.7 supports older platforms including Windows 95/98 and NT (3.51, 4, 2000 and XP SP1).
Source code is included. The RedMon licence requires that you include the source if you redistribute RedMon.
All user text is stored in language specific resources. Translating RedMon to another language should be straightforward.
Changes
- Support for Windows 7, Vista and XP SP3.
- x64 build (Windows 7, Windows XP Professional x64 Edition).
- Displays «Prompt for filename» dialog in the correct local session on Windows 7.
- Configure RedMon port from another program (RedMonConfigurePort API).
- Setup program prompts for Administrator credentials.
- Help file converted to HTML Help.
Isn’t in this release:
- Expand environment variables in program arguments.
- Extra installer that installs RedMon and configures a port as a Ghostscript PDF writer.
- Support for Windows 95, 98, ME, NT 3.5, NT 4, 2000 and XP SP1. Use RedMon 1.7 on these platforms.
- Languages other than English.
- Support for Windows Terminal Services.
Won’t be implemented:
- Remote printing to a printer that uses RedMon.
- Support for Windows 10
Redirection Port Monitor
RedMon can be used with any program that accepts data on standard input.
Using RedMon you create redirected printer ports. If you connect a Windows printer driver to the redirected printer port, all data sent to the redirected port will be forwarded by RedMon to the standard input of a program. This program is then responsible for processing the data and producing new output.
PostScript written to a RedMon port can be converted to a PDF file using Ghostscript.
RedMon supports Windows 7, Vista and XP SP3.
For older versions of Windows including Windows XP SP1, Windows 2000, NT 4.0, NT 3.51, and 95/98/Me, use RedMon version 1.7.
Configuring RedMon is not a job for novices.
Installing RedMon requires Administrator privileges.
Follow the Ghostscript Example for the rest of the configuration.
After adding a port, you need to configure it with Configure Port. Enable bidirectional support must be disabled.
You cannot use the same port name as an existing port. In particular, you cannot create a redirected port named LPT1:
The Output from the program can be set to one of Program handles output, Prompt for filename, Copy stdout to printer, Copy temporary file to printer or Copy pipe to printer. If one of the latter three, you need to select a Printer .
If you select Print Errors, an error report page will be printed.
The program can be run Normal , Minimized or Hidden .
Run as User should be enabled. It should be disabled on Windows 2000 or earlier.
A Log File can be configured to receive standard output and standard error. With a log file, you can view error messages that were written to standard output or standard error.
For example, the program arguments might include:
This method is recommended for use with Ghostscript, and is commonly used with a PostScript printer driver and the Ghostscript pdfwrite device to create a PDF writer.
Do not share a printer which uses RedMon with Prompt for filename . RedMon will not allow this because the Save as dialog box would appear on the server computer, not the client which submitted the print job.
If using Windows 7 or Vista or later, you must use Run as User with Prompt for filename .
This method should not be used with Ghostscript 5.50 or earlier.
For example, the program arguments might include:
This method is recommended for use with any version of Ghostscript.
For example, the program arguments might include:
This method is recommended for use with Ghostscript and requires Ghostscript 6.0 or later.
Print Errors is most useful when a redirection program writes an error message to standard output, which is captured by the log file.
Print Errors is ignored if Program handles output is selected.
REDMON_PORT is the port name, typically «RPT1:».
REDMON_JOB is the job number, an integer.
REDMON_PRINTER is the name of the printer (e.g. «HP DeskJet 500»).
REDMON_OUTPUTPRINTER is the name of the output printer used by the output options Copy stdout to printer, Copy temporary file to printer or Copy pipe to printer.
REDMON_MACHINE is the name of the machine that created the job (e.g. «\\Desktop»).
REDMON_USER is the name of the user who owns the job (e.g. «JCITIZEN»). %u in the program arguments will be replaced by the name of user.
REDMON_DOCNAME is the name of the print job (e.g. «Printer Test Page»). %d in the program arguments will be replaced by the name of print job.
REDMON_BASENAME is the name of the print job, with any path and file extension removed. %b in the program arguments will be replaced by this.
REDMON_FILENAME is the file name of the output file if Prompt for filename is used, or the temporary file if Copy temporary file to printer is used.
REDMON_SESSIONID is the session id of the Windows Terminal Server client session. This will be zero if Windows Terminal Server is not used.
TEMP and TMP are directories for temporary files.
Note that under Windows NT, the redirection program runs in the environment of the SYSTEM account. Apart from the above environment variables, very few are set. The registry HKEY_CURRENT_USER and user profile are that of «Default User». If using Run as user , an attempt is made to load the user environment variables, but this may not work.
«Run as User» is only available for NT 4 or later. Do not enable this if the printer is shared on a network. Remote users can’t run programs on your computer. If a remote user tries to submit a job, the EXE will fail with a message like
The spooler service will then be locked up until you stop and restart it.
Run as User should be enabled for Windows Vista, Windows 7 or later. It was originally intended for launching a GUI program such as GSview locally via RedRun.
If using Run as user , an attempt is made to load the user environment variables. If this fails, it will have the environment of the SYSTEM account. User profile information may not be correct.
To use a log file, you must check Use Log File and then specify a valid file name for the log file.
If you check Debug , RedMon will write extra debugging messages to the log file. These messages are probably only useful to the author of RedMon. If you want the log file to contain only the standard output of the redirected program, uncheck Debug .
— An interpreter for the PostScript (TM) language and the Adobe Portable Document Format (PDF — sometimes confused with Acrobat, Adobe’s PDF browser/editor product), and
— A set of C procedures (the Ghostscript library) that implement the graphics and filtering (data compression / decompression / conversion) capabilities that appear as primitive operations in the PostScript language and in PDF.
Ghostscript is available for Microsoft Windows, and many versions of Unix from
Ghostscript is a copyright work owned by Artifex Inc.
GSview is a previewer from Ghostgum Software Pty Ltd, based on Ghostscript. GSview is available from
If you wish to use Ghostscript with RedMon , you should install Ghostscript using the setup program provided with it. Use GSview to make sure that Ghostscript is running correctly before trying to use RedMon.
In the following examples, the Ghostscript command
will need to be changed to match your version of Ghostscript.
Install a printer driver for a colour PostScript printer, such as «Ghostscript PDF» distributed with ghostscript in ghostpdf.inf/ghostpdf.ppd .
To use RedMon and Ghostscript to create a PDF writer, you need to use the Ghostscript device pdfwrite. The Ghostscript command would be
and the arguments
Make sure you include the space and dash at the end of the line. Failure to do this could result in Ghostscript stalling the print queue. Do not put line breaks between or after the arguments. Output should be set to Prompt for filename.
If using Windows 7, Vista or later, enable Run as user .
This assumes the target printer is an HP DeskJet 500 printer whose queue name is «HP DeskJet 500» (a problem since Windows 7 drivers for this old printer are hard to find).
Install a PostScript printer using the Add Printer wizard. One suitable printer driver is in the ghostscript lib directory as ghostpdf.inf/ppd.
In Device and Printers right click on the PostScript printer and select Printer properties .
On the General tab, select the Change Properties UAC button. If this UAC button doesn’t exist, another method for getting to the Printer Properties with Administrator privileges is via Control Panel , System and Security , Administrative Tools , Print Management , using right click Run as administrator .
On the Ports tab select Add Port. . Select Redirected Port then New Port. . The RedMon Add Port dialog will appear. Select Ok to accept the defaults, then Close . If it fails you don’t have Administrator privileges.
Back on the printer properties port tab, select Configure Port. The RPT1 Properties dialog will appear.
Enter the program name
and the arguments
Make sure you include the space and dash at the end of the line. Failure to do this could result in Ghostscript stalling the print queue. Do not put line breaks between or after the arguments. See the Ghostscript files Use.htm and Install.htm for an explanation of these options.
Set output to Copy temporary file to printer and set printer to HP DeskJet 500 .
If you want to see what is written to stdout (i.e. you want to to look at error messages), see Log File Properties.
Before configuring RedMon, make sure that your redirection program runs correctly from the command line.
Problem: When attempting to add a port, a message box titled Add Printer Ports appears saying Specified port cannot be added. Operation could not be completed (error 0x00000001).
You need to have Administrator privileges to add a port. If you have an Administrator account, log in using it. Open Devices and Printers . Right click on the printer, then Printer Properties . Click on the Change Properties UAC button. Click on Ports tab. Now you can Add Port, Configure Port etc.
If the Change Properties UAC button doesn’t exist, another method for getting to the Printer Properties with Administrator privileges is via Control Panel , System and Security , Administrative Tools , then right click on Print Management then Run as administrator .
Problem: When attempting to print, a message box titled Printers Folder appears saying There was an error writing to RPT1: for the printer (Apple LaserWriter II NT): The system cannot write to the specified device.
RedMon couldn’t start the program you specified. Look in the Log File for more details.
Make sure you have disabled bi-directional printer support.
Problem: Ghostscript locks up.
You might have forgotten to append a space and dash to the end of the Ghostscript arguments. This is needed to make Ghostscript read from standard input.
Problem: Ghostscript will process some jobs, but not others. If you print to FILE:, Ghostscript is able to process these jobs.
Make sure that Enable bidirectional support is disabled. If this is the problem, the log file with debugging turned on will include the message
Problem: Attempting to configure a port gives the error message: «This option is not available or not allowed».
You may need to configure the RedMon port from the computer running RedMon, rather than a remote computer.
This file is part of RedMon.
This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
This software is distributed under licence and may not be copied, modified or distributed except as expressly authorised under the terms of the LICENCE.