So I actually managed to get this working. The instructions here helped a bunch: http://redwallaus.com/2013/04/04/airprint-with-raspberry-pi/
Printing is very slow, but it works without a hitch!
EDIT
Per piers7's comments, I have pasted the content of the article into this post.
##Prerequisites
For this guide I will assume that you have already setup your Pi with Raspbian.
- Putty
- Filezilla
- MP620 Canon Printer (Thats what im using)
##Download
- download bjnp files
Install
sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install avahi-daemon avahi-discover libnss-mdns cups cups-pdf gutenprint pycups avahi python2
sudo apt-get install cups
sudo apt-get install python-cups
sudo apt-get install avahi-daemon
sudo usermod -aG lpadmin pi
sudo /etc/init.d/cups start
sudo /etc/init.d/avahi-daemon start
sudo nano /etc/cups/cupsd.conf
Now edit the config file by commenting out the below line with a # and add Port 631 to the line below
#Listen localhost:631
Port 631
Under # Restrict access.. add Allow @Local as below
# Restrict access to the server...
Order allow,deny
Allow @Local
And add Allow @Local
again under the following headings
# Restrict access to the server...
# Restrict access to the admin pages...
# Restrict access to configuration files...
Restart cups: sudo /etc/init.d/cups restart
Copy the downloaded bjnp files to the Pi using filezilla
sudo apt-get install libcups2 libcups2-dev
tar zxf cups-bjnp-1.2.1.tar.gz
cd cups-bjnp-1.2.1/
./configure –prefix=/usr
make
sudo make install
sudo mkdir /opt/airprint
cd /opt/airprint
sudo wget -O airprint-generate.py –no-check-certificate https://raw.github.com/tjfontaine/airprint-generate/master/airprint-generate.py
sudo chmod 755 airprint-generate.py
sudo ./airprint-generate.py -d /etc/avahi/services
sudo reboot
Type https://XXX.XXX.X.X:631/admin into your browser and enter.
Select add printer
Follow the prompts to add your printer for example a mp620’s ip might be bjnp://XXX.XXX.X.XX:8611