Turn any non-PostScript printer into a PostScript printer

You can give any non-PostScript printer a PostScript front end from a Windows computer. You'll need to download three free utilities: Ghostscript, GSview and RedMon.

I've found a way to give any printer a PostScript front end from a Windows computer. It involves installing three...

freeware utilities – Ghostscript, GSview and RedMon -- and then following a procedure that involves many steps but is actually straightforward.

The reason I do this is because I have some non-PostScript printers -- an Epson inkjet printer and a Hewlett-Packard LaserJet 1000 -- that don't use PCL or PostScript. Instead they use a proprietary wire protocol developed by Zenographics Inc.

The only drivers these printers have are for 32-bit Windows, so if you want to use them on 64-bit Windows machines (or share them out to non-Windows computers), you're out of luck. At some point I'll buy a network-enabled PostScript-compatible printer to replace the LaserJet 1000, but dealing with inkjets is tougher.

I've found a way to give any printer a PostScript front end from a Windows machine. This makes it possible for any machine that can print to a networked PostScript printer to use it. I've compiled the steps from several sources, but mostly from a tutorial by iHarder.net. (Don't be intimidated by the number of steps it takes. It's actually a fairly straightforward process.)

1. Make sure the non-PostScript printer you want to share out as a PostScript printer is running properly. If you can already print to the printer in Windows without issues, you should be OK. The printer does not need to be shared on the network for this to work; it simply needs to be accessible from the machine you're using to do the print sharing.

2. Go to the printer's Properties pane in Control Panel | Printers, and copy the exact name of the printer to an instance of Notepad. The printer name is usually in the first text box on the General tab, so all you need to do is copy that and you should be all right. This will be extremely important later.

3. Download and install the following three programs, in this order:

  • Ghostscript , a free interpreter for the PostScript printer language, which is widely used in print-to-PDF packages and other such applications. The most recent version is 8.60, released Aug. 1, 2007.
  • GSview, a free utility that uses Ghostscript to render PostScript output to a display or printing device. GSview will be used to do the actual printing.
  • RedMon , a free program that redirects printer output to a program or another printer.

4. Go to Control Panel | Printers and select File | Server Properties. In Vista, you'll need to select File | Run as Administrator | Server Properties. Select the Ports tab in the Print Server Properties window.

5. Click on Add Port. Select Redirected Port as the new port type, then click on New Port. You'll be asked to give a name for the new port; the default name RPT1: should be fine.

6 .In the Ports tab again, select the new RPT1: port and click Configure Port.

7. In the box "Redirect this port to the program," supply the pathname to the program gsprint.exe that is installed with GSview. For instance, if you installed GSview to the folder C:\Program Files\GSview , it will be C:\Program Files\GSview \gsview\gsprint.exe. Do not supply any command-line arguments; just give the path to the gsprint application.

8. In the "Arguments for this program" box, supply the command-line arguments that will allow gsprint to talk to the printer you're sharing out. The one option you must supply is:

  1. -printer " " where is the exact name of the printer you copied in Step 2. In my case, it's:
    -printer "hp LaserJet 1000"

9. At the end of the "Arguments. . ." box, place a single space and a dash. This trailing dash tells gsprint to accept input directly, which is how RedMon typically sends output. My own arguments:

  1. -printer "hp LaserJet 1000" - (Again, note the trailing space and dash.) You may need to supply other options depending on which printer you're sending to. (See the gsprint documentation for more details.)

10. Under Output, select Program handles output.

11. Under Run, select Hidden. Do not check "Run as User."

12. "Shut down delay" can remain as 300 seconds.

13. Click OK to close the RPT1: Properties window.

14. Click Close to close the Print Server Properties window.

15. Because the Print Spooler runs in a different user account than the one you've installed printers in, you'll have to add a printer definition manually to that account. Open REGEDIT32 (or just REGEDIT in Vista) and navigate to HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\devices.

16. In the right-hand pane, look for a REG_SZ value whose name is the printer you're redirecting to (the same name you copied in Step 2),a value of something like winspool,Ne01:. Copy this information.

17. Navigate to HKEY_USERS\.DEFAULT\Software\Microsoft\Windows NT\CurrentVersion\Devices. Create a REG_SZ value with the same name and data. Note: This step is critical; without it, the redirector will not be able to see a printer to redirect output to. The key and its data should be recreated exactly.

18. Close RegEdit.

19. In the Control Panel | Printers window, click "Add a printer" to start the Add Printer Wizard. If you do this in Vista, use File | Run as Administrator | Add a Printer.

20. When you're asked what kind of printer to add, select "Local Printer" but do not select the option to automatically detect and install Plug and Play printers.

21. Windows XP will ask you what port to use. Select the new RPT1: port you created.

22. When prompted for which printer driver to install, the exact choice of driver is flexible. I've had good results by selecting Generic | MS Publisher Imagesetter, a PostScript driver that most Windows machines have a driver for (so other computers that connect to it can use the same driver) and which works well with generic PostScript output. The exact choice of PostScript driver can always be changed after the fact, and you can tweak the settings a bit, so this is not the most important setting to worry about right now.

23. Pick a name for the printer, which you'll use to have it recognized on the network. If you picked the Imagesetter driver, the name will be "MS Publisher Imagesetter." You could also name this printer "PostScript for Printer XX" as a way to distinguish it from the actual printer you're redirecting output to.

24. When asked if you want to share this printer, select a share name. It will be the same name you chose before for this printer, although you can abbreviate it.

25. When asked to print a test page, select Yes. If everything has gone well, the real printer should produce a Windows printer test page.

26. As a final test, go to another computer and add the new shared printer there. Now try to print.

Add command-line options for GSprint

Many of the problems that stem from using this technique occur because of how the PostScript output is rendered. The gsprint program has several command-line options you might need to add, depending on what kind of output you render (i.e., color versus b&w).

The PostScript printer driver's own rendering defaults may also need to be changed, depending on what kinds of effects or font substitutions you want to use. To change them, go to the PostScript printer's properties (in Vista, be sure to do this as Administrator), select Advanced | Printing Defaults and click Advanced again. Common options to change are:

  • TrueType Font: Setting this to "Download as Soft Font" ensures that all fonts render correctly, though at the cost of possibly adding processing time.
  • Document Options | PostScript Options | Output Option: This is set by default to "Optimize for Speed" but you can also set it to "Optimize for Portability" if things don't print correctly.
  • Document Options | PostScript Options | TrueType Font Download Option: "Automatic" usually works fine, but you can also set it to "Outline" or "Bitmap" if certain fonts don't render correctly.

The exact collection of options will change depending on which PostScript driver you're using, but these are the most important ones.

More on printer management

  • Learn how to use VBscript to add designated printers by machine name.
  • Visit our topical resource center to learn other file and print management techniques.

About the author: Serdar Yegulalp is editor ofWindows Insight (formerly the Windows Power Users Newsletter), a blog site devoted to hints, tips, tricks and news for users and administrators of Windows NT, Windows 2000, Windows XP, Windows Server 2003 and Vista. He has more than 12 years of experience working with Windows, and contributes regularly to SearchWinComputing.com and other TechTarget sites.

Dig Deeper on Microsoft Hyper-V management