Update: I wrote a step by step guide on creating a virtual PDF printer as a new virtual machine. This has been more reliable and has replaced the work around I used below
Our small business is beginning the move from Windows XP to Windows 8. Moving to a new operating system is always a problem. There’s new things to learn, old systems that stop working together and many many hours of hair pulling on my part. It is progress though – I can’t imagine going back to Windows 98!
The biggest problem I’ve had is making our Network PDF printer work with windows 8. It’s based upon Ghostscript but there are no Ghostscript printer drivers for Windows 8. After two or three days of working through the problem, I’ve solved it.
- Setup a CUPS printer service on a linux server
- Have cups connect to our PDF Print appliance
- Have the print appliance put the PDF on a new network share
Pros: We can generate PDFs (some have automatic letterhead backgrounds which I couldn’t do with CUPS alone)
Cons: It means having another print server set up to look after, It means users will no longer get their PDF’s by email (it will go to a new network share).
Part 1 – The existing solution
For several years I’ve used YAFPC (Yet Another Free Pdf Composer). It is a self contained print appliance that runs as an instance on our VMWare server. I can’t remember what I paid for it, but it has been worth every penny. It is the sort of stable appliance that hasn’t needed to be updated for many years. It just works and I like that. Virtual Printers are created (A4_Blank, A4_On_Letterhead_Background, etc) and users can print to those printers.
The resulting PDF document is emailed to them as well as put in an automatic shared folder in their name on the appliance. It is controlled by a simple web interface. Behind the scenes, it’s a linux server and the print engine is GhostScript. It includes GhostScript print drivers for Windows XP and Windows 7 (and Mac) but Windows 8 has changed things and there is not yet (and may never be) a GhostScript print Driver.
Part 2 – CUPS (Common Unix Print System)
CUPS is a print server for networks that runs on unix like systems (Linux and Mac OS X included). There is a plugin called CUPS-PDF and my first thought was this would be all I need.
We already have a server running Ubuntu so I installed the packages (apt-get install CUPS CUPS-PDF) and set up a PDF printer. That was all pretty straight forward but it really only allowed for blank backgrounds – I couldn’t find a way of having a ‘letterhead’ printer as well as a ‘blank a4’ printer.
I reasoned in my mind that if I could print from Windows 8 to the CUPS server, I could probably forward the CUPS server to YAFPC PDF Printers. My logic was that CUPS would convert the print file in a way YAFPC/GhostScript would understand.
Part 3 – Connecting CUPS to the YAFPC
Through the CUPS web page admin:
Administration > Add Printer > [Other Network Printers | LPD/LPR Host or Printer ]
Connection = lpd://networkpdf/PDFLetterhead [alter that path to suit your printer]
Name/Description/Location as you choose,
Share this printer.
For the driver: Generic > Generic CUPS-PDF Printer (en)
worked for me, I assume any PostScript driver would work.
Finally > Add Printer.
You get to set a few defaults based on the driver you chose. EG: I could set the print resolution.
Part 4 – Changing some YAFPC settings
YAFPC normally recogises the windows user account name and makes some clever/customisable assumptions in order to email the PDFs to the user that printed them. It also stores them locally in a shared folder with the same name as the user. All very clever, but now the printing user is the CUPS user.
YAFPC lets you choose to store PDFs in an external storage location. I entered some credentials for a location on our Samba server (which happens to be the same server the CUPS service is running on).
Each virtual printer had to be updated to copy the file to the external storage.
Part 5 – Adding the network PDF printer to Windows 8
Open Control Panel
Tip: Try shortcut “[Windows Key] + I”
Add a Printer
Wait for network printers to be found, select the new network printer
You’ll see a warning “No driver found”, choose OK to locate one manually
Choose the driver “Generic” > “MS Publisher Color Printer”
This is a PostScript Printer driver. I assume any postscript driver will work (a lot of forum comments suggested HP drivers), but this worked for me first time so I’ve stuck with it.
Decide upon a printer name, Finish.