User Tools

Site Tools


kicad:good_pdf_output_from_kicad

This is an old revision of the document!


Good PDF output from KiCad in Linux

There are several ways to generate PDF documents of Eeschema files under Linux. The most reliable way I've found is to first plot to PostScript (File > Plot > Plot PostScript) and then use the ps2pdf1) command from ghostscript to convert to PDF:

ps2pdf -dOptimize=true -sPAPERSIZE=11x17 *.ps

The biggest problems with this are:

  1. It’s a lot of typing to get the conversion to happen (the minutia of which you won’t have memorized).
  2. It leaves you with both a PostScript and a PDF of the document(s), one of which is likely to get out of sync with the other, which may or may not be in sync with the actual schematic, etc.

To help with this, I use the script below. I drop a copy of it into the root of a KiCad project and edit the OPTIONS as needed for the project. Then whenever I want PDFs of my schematics, I plot PostScript from Eeschema and then click on this script in my file manager. Note that running this script will destroy any *.ps files in the directory—that’s by design.

makepdf
#!/bin/bash
 
# DESTRUCTIVELY convert all postscript files
# in working directory to PDF.
# Requires ghostscript.
 
# Mithat Konar 2013 (http://mithatkonar.com)
 
OPTIONS="-dOptimize=true -sPAPERSIZE=11x17"
 
FILES=$(ls -1 *.ps)
 
for file in $FILES
do
  ps2pdf $OPTIONS $file && rm $file
done

I’ve not tried the script on PostScript files other than those produced by Eeschema, but I’ve got no reason to think it won’t work on other PostScript files as well.

SVG version

I am currently testing the following for working form SVG files rather than PS. It also uses a GUI dialog based interface. It needs more testing before I'm comfortable “releasing” it.

svg2pdf-d
#!/bin/bash
 
########################################################################
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
########################################################################
 
# Copyright (C) 2013 Mithat Konar <http://mithatkonar.com>
 
# DESTRUCTIVELY convert all svg files in working directory to pdf.
# Source file extension is case sensitive!
 
# Requires inkscape, gxmessage.
 
OPTIONS=""
EXT=.svg
SCRIPTNAME=$(basename $0)
 
# Make list of files to be processed.
FILES=$(ls -1 *${EXT}) || { gxmessage -title "$SCRIPTNAME" "No ${EXT} files to convert."; exit 1; }
 
# Get confirmation from user to continue.
gxmessage -title "$SCRIPTNAME" \
  -buttons "GTK_STOCK_NO:1,GTK_STOCK_YES:0" \
  -default "GTK_STOCK_YES" \
"Desctructively convert the following to PDF?
 
$FILES" || exit 1
 
# Make a temp file to store batch commands.
CMDFILE=$(mktemp) || { gxmessage -title "$SCRIPTNAME" "Error: Could not create temp file." 1>&2; exit 1; }
 
# Build up the list of commands in temp file.
for file in $FILES
do
    base=$(basename $file ${EXT})
    echo "${file} --export-pdf=${base}.pdf" >> $CMDFILE
done
 
# Process commands in a batch.
DISPLAY= inkscape ${OPTIONS} --shell < $CMDFILE
rm -f $CMDFILE
echo
 
# Delete old files.
# Since inkscape exits with 0 even with errors, we need to explicitly check
# for conversion before deleting originals.
rv=0
not_deleted=""
for file in $FILES
do
    base=$(basename $file ${EXT})
    if [[ -f ${base}.pdf ]]; then
        rm $file
    else
        not_deleted="$not_deleted
$file"
        rv=1
    fi
done
 
if [[ "x$not_deleted" != "x" ]] ; then
    gxmessage -title "$SCRIPTNAME" \
      "The following files were not deleted:
$not_deleted"
fi
exit $rv
1)
The Arch wiki has a good writeup on ps2pdf.
kicad/good_pdf_output_from_kicad.1371945236.txt.gz · Last modified: 2013/06/22 23:53 by mithat

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki