Printing from Windows to CUPS
This is too good to wait on, even though it's late and I'm a little tired. May fill in more later. I have a printer. I hate the Windows drivers that come with it, they're full of ads, obnoxious automated update pop-ups, they hog a lot of memory and CPU, etc. That's alright, I usually use FreeBSD anyway and CUPS ends up working great. I had to find the linux drivers for my particular printer in another port (hpijs or hplip (YMMV)), but was not a big deal. I'm printing over the network from FreeBSD. Everybody's happy.
But, I have a Windows machine for the kids and now they're constantly wanting to print things for school. Sometimes they can use the FreeBSD machine, but sometimes it's not convenient. What I want is for the FreeBSD machine to be a print server to the Windows machine.
So, I know!, Windows means samba and there's a port named "cups-samba". This must be just what I'm looking for. ... Well, it was kind of what I was looking for. But, it was too much trying to do things the Windows way. A little painful. What I discovered in digging around was that I didn't need cups-samba or even samba. CUPS by default leaves a port open for printing and you can use IPP to print directly to a CUPS printer via the network, even from Windows, and using generic, Windows Postscript printer drivers already on your Windows machine (probably).
My breakthrough came from a Gentoo wiki (here) where I found this great wisdom on the subject:
I don't understand why this HOWTO includes Samba functionality. It seems to me to be an inappropriate security risk, especially if your goals are simply what this HOWTO is addressing -- setting up a printer on a Gentoo box using CUPS, and using that printer natively with Windows.
Using IPP, you can axe everything in this HOWTO regarding printing via Samba. CUPS setup as per the HOWTO looks good. I use [OPTION 1] setup in my mixed-OS environment:
[OPTION 1] Generic PS Driver using MS Publisher Imagesetter driver
Windows: run Add Printer, select "Connect to a printer on the Internet..." and enter the URL for your printer (http://<computer-ip>:631/printers/<cups-printer-name>). When it asks for a printer manufacturer, select "Generic", and the printer "MS Publisher Imagesetter".
There's not much more to say. It worked perfectly. I printed out a little sudoku puzzle to test it.