I have the same printer myself and solved it this way on Ubuntu 14.04:
Compile and install driver
There is an open-source driver for canon carps printers on github. You'll have to compile it yourself and configure some stuff.
First, download a zip of the source code: https://github.com/ondrej-zary/carps-cups/archive/master.zip
Extract the .zip file, open a terminal and go to the extracted folder. To make sure you are in the correct folder, type ls and you should see a similar output:
carps-decode carps.h Makefile rastertocarps.c test-encode.sh
carps-decode.c carps.txt ppd README.md
carps.drv LICENSE rastertocarps test-decode.sh
install the dependencies:
sudo apt-get install make gcc libcups2-dev libcupsimage2-dev cups-ppdc
compile and install the packages:
sudo make install
Now, when you try to add the printer via the "printers" dialog, it should automatically detect the correct driver. However, to get the PC-D320 working perfectly, we still have to change some configuration.
PS-D320 specific configuration
Without this configuration, the printer only prints the first print job, and you have to restart the printer to print a second print job.
sudo nano /etc/cups/cups-files.conf
#FileDevice No to
FileDevice Yes. Restart cups:
sudo service cups restart
Add the printer via the "printers" dialog, but change the
X depends on your system. In my case it was
file:///dev/usb/lp1 you can check what lpX the printer is by running
udevadm info -a --name=/dev/usb/lpX