This is a cups-pdf v3.0.1 with a patch to allow printing text as text, not as images. This issue is also known as "cups-pdf not embedding text", or "producing large PDFs with text that can not be searched"
This is fix is achieved by adding PDF passthrough functionality, so incoming PDFs remain PDFs, instead of being converted from PDF to PostScript, then back to PDF. Why is this fix not in the original code? The author had different goals for CUPS-PDF in mind, refusing to fix it.
There is a cups-pdf version 2.6.1 with the fix in an easy to install deb patch form in ppa:jethrogb/ppa. Add it to your list of apt sources and update. For Arch Linux you can find it in AUR: cups-pdf-to-pdf-git
For all the other system, or if you want the latest functionality follow the directions below:
apt-get install libcups2-dev
gcc -O9 -s -o cups-pdf cups-pdf.c -lcups
(note the different order of options than the one suggested on the cups-pdf website)
sudo cp /usr/lib/cups/backend/cups-pdf /usr/lib/cups/backend/cups-pdf.bak
sudo cp cups-pdf /usr/lib/cups/backend/
sudo cp CUPS-PDF_opt.ppd /usr/share/cups/model
sudo cp cups-pdf.conf /etc/cups/
If you create the printer with the URL like this: <cups-pdf://localhost>, then it will be looking for a file cups-pdf-/localhost.conf Change the URL to cups-pdf:/ (it is a valid url after it's created, but you might not be able to use it during creation). It will then look for cups-pdf.conf
sudo vi /etc/apparmor.d/usr.sbin.cupsd
/usr/sbin/cupsd flags=(attach_disconnected)
section add unix peer=(label=/usr/lib/cups/backend/cups-pdf),
signal peer=/usr/lib/cups/backend/cups-pdf,
/usr/lib/cups/backend/cups-pdf
section add /var/log/cups/ r,
/var/log/cups/** rwk,
/etc/cups/ r,
unix peer=(label=/usr/sbin/cupsd),
signal peer=/usr/sbin/cupsd,
@{HOME}/bin/pdfpostproc.sh rUx,
(last line is needed if you indicated a post-processor in your /etc/cups/cups-pdf.conf)
sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.cupsd