I realised that I don’t have a post on configuring AirPrint on this blog, so here it is.
If you are inexperience with the command line and have the printer configured on a Mac, you may be better off with Printopia. If your printer is connected to an AirPort Extreme or Time Capsule and you want to set up AirPrint via a CUPS server and Bonjour, please refer to my post on Tumblr.
Otherwise, if you want to AirPrint-enable the printers connected to your Linux server (via CUPS), read on.
First things first, please ensure that you are able to print a ‘Test Page’ directly from the CUPS administration page, i.e. http://localhost:631/. When you are at the Administrative Page, go to Printers -> Printer Name -> Maintenance -> Print Test Page. If there’s an issue with printing a Test Page, please troubleshoot the issue first before continuing with this post.
Once out of the way, generate the Avahi service file using the python script by tjfontaine. Place the generated .service files into /etc/avahi/services/.
Then, you’ll be able to see your printer(s) listed on the iOS printer selection dialog.
A peculiarity of iOS AirPrint is that devices have no printing configuration, except for a 2-sided printing On/Off switch. All printing is governed by the default configuration (as defined in CUPS) which is suitable for most users. But in my case, I decided to offer 4 different types of print services (as seen in the screenshot above), in the hope to save toner and to offer more printing choices.
The other printing options are purely duplicates of the original printer with different default options applied.
Let me know in the comments if you have any thoughts or suggestions.