The most reliable way I've found to get good PDFs from KiCad under Linux is to first plot to SVG and then use an external tool to convert the SVGs to PDF. Plotting to SVG in KiCad isn't difficult:
However, converting these files to PDF isn't quite as straight-forward. I wrote the script svg2pdf-d to automate the conversion process. Just drop a copy of the script into a KiCad project directory and then run it whenever you want to convert files.
Running this script will delete all *.svg files in the working directory!
This is by design. I want to minimize the number of files that might be out of sync with the source, and keeping both SVGs and PDFs is just asking for trouble!
Put any SVG artwork you need to keep in a subdirectory or edit the script so it doesn't delete *.svg files.
There are a few things more you should note:
I include the PostScript version here because there might be some limitations with SVGs that I've yet to discover.