Canon kindly provide Linux drivers for their inkjet printers. Unfortunately, they're not designed for Ubuntu. It took a while to get my (IP2500) printer working, so this is for reference:
First, get the driver RPMs from Canon, and convert them to .deb using fakeroot alien
where possible:
- The first, cnijfilter-common-*.src.rpm, doesn't build properly using alien. Luckily, someone on the OpenPrinting forum has a deb that works. The important file is pstocanonij, which has to be in /usr/lib/cups/filter/.
- The second, cnijfilter-ip2500series-*.i386.rpm installs fine: run
fakeroot alien
on the .rpm file, then double-click the .deb that's produced to install it.
Next, try running cifip2500 (it'll probably be in /usr/local/bin/). If it produces errors, then you'll know which libraries it's not able to find. I had to do the following:
sudo ln -s /usr/lib/libtiff.so /usr/lib/libtiff.so.3
sudo ln -s /usr/lib/libpng.so /usr/lib/libpng.so.3
Once that's working, restart cups with sudo /etc/init.d/cupsys restart
then open System > Administration > Printing and add the new printer.