There's been some activity lately around PostScript drivers in Windows being initially set for PostScript Level 2 language support (normally to assist with printing from some specific application), but arriving at the desktop PC with Language Level 3 support in full sway. There's a really quick remedy for that. But you need to follow some rules.
- Install the printer driver on the server, but don't create a queue with it yet.
- You need to be really handy with Notepad.
- You need to launch Notepad as an administrator because of the location of the file you'll be editing.
- My example uses the Print Management MMC snap-in, so you might want to find yourself on a Windows 2008 R2 or newer server.
Got it? Good! Let's add a propeller to our cap, shall we?
For this walk-through, I'll be using the HP Universal Printer Driver v6.2 PS3 driver. Your preparation mileage may vary, but the editing part won't.
- Download the driver from the manufacturer's website.
- Once downloaded, right-click it and go into Properties.
- Unblock it.
- The HP UPD downloads as an EXE, but it's really a WinZip self-extracting archive. I prefer 7-Zip, so I right-click the downloaded "upd-ps-x64-18.104.22.16836.exe" and choose 7-Zip > Extract to "upd-ps-x64-22.214.171.12436\".
- Using the Windows Print Management MMC snap-in, add the driver to the computer.
- Launch Notepad as Administrator.
- Choose File > Open and navigate to C:\Windows\System32\Spool\Drivers\x64\3. Change the see "all files".
- Find the file named "hpcu186s.ppd". To be more efficient, I set the Open dialog box to display in "Details" mode and sort by Type. This lets me go the type "PPD file" quickly.
- Near the top of the file structure there will be a PostScript command (to be more specific, it is a Property, but we'll call it a command) called "*LanguageLevel" with a value of 3. I've highlighted it below:
- Change the 3 to a 2, keeping the quotes.
- Save the file.
Woo hoo!! We did it! Who said that printer languages were obscure and hard to meddle in? "Not this guy!" (or gal, if the better gender is reading this), says I.
That's half the battle won. At this point, I like to check for, and destroy, the file named just like my newly-edited PPD, but with a ".BPD" extension. This is a "Binary Printer Description" and is what you get when Windows has decided it can officially read your PPD file. It essentially takes all of that beautiful ASCII in the PPD and builds a "rapidly readable" binary version of it. From that point forward, Windows will only use the BPD when installing new printers...and it may not have our edit in it (so what good is that??!!?? jury's still out). So we search for it and delete it from our hard drive. But do not fear: Windows dutifully makes a new one almost on-demand when Spooler needs it, and this one will have our edit.
With that done, just install your print queue, secure it, and deploy. When you go into Propererties for the queue, you'll see that the queue's language level is 2. In the case of the HP UPD v6.2, that path is found in Properties > Advanced > Printing Defaults > Advanced > Document Options > PostScript Options > PostScript Language Level, highlighted below:
And the cool part is that I can click on that 2, and in the counter wheel control that pops up, I can't get higher than 2. And that is exactly what we wanted.