Copyright (C) 2000-2012 |
GNU Info (emacs)MS-DOS PrintingPrinting and MS-DOS =================== Printing commands, such as `lpr-buffer' (Note: Hardcopy) and `ps-print-buffer' (Note: PostScript) can work in MS-DOS and MS-Windows by sending the output to one of the printer ports, if a Posix-style `lpr' program is unavailable. The same Emacs variables control printing on all systems (Note: Hardcopy), but in some cases they have different default values on MS-DOS and MS-Windows. If you want to use your local printer, printing on it in the usual DOS manner, then set the Lisp variable `lpr-command' to `""' (its default value) and `printer-name' to the name of the printer port--for example, `"PRN"', the usual local printer port (that's the default), or `"LPT2"', or `"COM1"' for a serial printer. You can also set `printer-name' to a file name, in which case "printed" output is actually appended to that file. If you set `printer-name' to `"NUL"', printed output is silently discarded (sent to the system null device). On MS-Windows, when the Windows network software is installed, you can also use a printer shared by another machine by setting `printer-name' to the UNC share name for that printer-for example, `"//joes_pc/hp4si"'. (It doesn't matter whether you use forward slashes or backslashes here.) To find out the names of shared printers, run the command `net view' at a DOS command prompt to obtain a list of servers, and `net view SERVER-NAME' to see the names of printers (and directories) shared by that server. Alternatively, click the `Network Neighborhood' icon on your desktop, and look for machines which share their printers via the network. If the printer doesn't appear in the output of `net view', or if setting `printer-name' to the UNC share name doesn't produce a hardcopy on that printer, you can use the `net use' command to connect a local print port such as `"LPT2"' to the networked printer. For example, typing `net use LPT2: \\joes_pc\hp4si'(1) causes Windows to "capture" the LPT2 port and redirect the printed material to the printer connected to the machine `joes_pc'. After this command, setting `printer-name' to `"LPT2"' should produce the hardcopy on the networked printer. With some varieties of Windows network software, you can instruct Windows to capture a specific printer port such as `"LPT2"', and redirect it to a networked printer via the `Control Panel->Printers' applet instead of `net use'. Some printers expect DOS codepage encoding of non-ASCII text, even though they are connected to a Windows machine which uses a different encoding for the same locale. For example, in the Latin-1 locale, DOS uses codepage 850 whereas Windows uses codepage 1252. Note: MS-DOS and MULE. When you print to such printers from Windows, you can use the `C-x RET c' (`universal-coding-system-argument') command before `M-x lpr-buffer'; Emacs will then convert the text to the DOS codepage that you specify. For example, `C-x RET c cp850-dos RET M-x lpr-region RET' will print the region while converting it to the codepage 850 encoding. You may need to create the `cpNNN' coding system with `M-x codepage-setup'. If you set `printer-name' to a file name, it's best to use an absolute file name. Emacs changes the working directory according to the default directory of the current buffer, so if the file name in `printer-name' is relative, you will end up with several such files, each one in the directory of the buffer from which the printing was done. The commands `print-buffer' and `print-region' call the `pr' program, or use special switches to the `lpr' program, to produce headers on each printed page. MS-DOS and MS-Windows don't normally have these programs, so by default, the variable `lpr-headers-switches' is set so that the requests to print page headers are silently ignored. Thus, `print-buffer' and `print-region' produce the same output as `lpr-buffer' and `lpr-region', respectively. If you do have a suitable `pr' program (for example, from GNU Textutils), set `lpr-headers-switches' to `nil'; Emacs will then call `pr' to produce the page headers, and print the resulting output as specified by `printer-name'. Finally, if you do have an `lpr' work-alike, you can set the variable `lpr-command' to `"lpr"'. Then Emacs will use `lpr' for printing, as on other systems. (If the name of the program isn't `lpr', set `lpr-command' to specify where to find it.) The variable `lpr-switches' has its standard meaning when `lpr-command' is not `""'. If the variable `printer-name' has a string value, it is used as the value for the `-P' option to `lpr', as on Unix. A parallel set of variables, `ps-lpr-command', `ps-lpr-switches', and `ps-printer-name' (Note: PostScript Variables), defines how PostScript files should be printed. These variables are used in the same way as the corresponding variables described above for non-PostScript printing. Thus, the value of `ps-printer-name' is used as the name of the device (or file) to which PostScript output is sent, just as `printer-name' is used for non-PostScript printing. (There are two distinct sets of variables in case you have two printers attached to two different ports, and only one of them is a PostScript printer.) The default value of the variable `ps-lpr-command' is `""', which causes PostScript output to be sent to the printer port specified by `ps-printer-name', but `ps-lpr-command' can also be set to the name of a program which will accept PostScript files. Thus, if you have a non-PostScript printer, you can set this variable to the name of a PostScript interpreter program (such as Ghostscript). Any switches that need to be passed to the interpreter program are specified using `ps-lpr-switches'. (If the value of `ps-printer-name' is a string, it will be added to the list of switches as the value for the `-P' option. This is probably only useful if you are using `lpr', so when using an interpreter typically you would set `ps-printer-name' to something other than a string so it is ignored.) For example, to use Ghostscript for printing on an Epson printer connected to the `LPT2' port, put this in your `_emacs' file: (setq ps-printer-name t) ; Ghostscript doesn't understand -P (setq ps-lpr-command "c:/gs/gs386") (setq ps-lpr-switches '("-q" "-dNOPAUSE" "-sDEVICE=epson" "-r240x72" "-sOutputFile=LPT2" "-Ic:/gs")) (This assumes that Ghostscript is installed in the `"c:/gs"' directory.) For backwards compatibility, the value of `dos-printer' (`dos-ps-printer'), if it has a value, overrides the value of `printer-name' (`ps-printer-name'), on MS-DOS and MS-Windows only. ---------- Footnotes ---------- (1) Note that the `net use' command requires the UNC share name to be typed with the Windows-style backslashes, while the value of `printer-name' can be set with either forward- or backslashes. automatically generated by info2www version 1.2.2.9 |