User Tools

Site Tools


kicad:good_pdf_output_from_kicad

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
kicad:good_pdf_output_from_kicad [2013/05/20 14:36] mithatkicad:good_pdf_output_from_kicad [2013/06/18 22:01] mithat
Line 1: Line 1:
-====== PDF output from KiCad in Linux ======+====== Good PDF output from KiCad in Linux ======
  
-The best way I've found to get good PDF output from Eeschema under Linux is to first export to PostScript (//File > Plot > Plot PostScript//) and then use the ''ps2pdf'' command from ''[[http://www.ghostscript.com/|ghostscript]]'' to convert to PDF. (The Arch wiki has a [[https://wiki.archlinux.org/index.php/Ps2pdf|good writeup]] on `ps2pdf`.)+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 ''ps2pdf''((The [[https://wiki.archlinux.org/index.php/Ps2pdf|Arch wiki]] has a good writeup on ''ps2pdf''.)) command from ''[[http://www.ghostscript.com/|ghostscript]]'' to convert to PDF: 
 + 
 +<code bash>ps2pdf -dOptimize=true -sPAPERSIZE=11x17 *.ps</code>
  
 The biggest problems with this are: The biggest problems with this are:
Line 8: Line 10:
   - 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.   - 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 export 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.+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.
  
 <file bash makepdf> <file bash makepdf>
Line 28: Line 30:
 done</file> done</file>
  
-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 PS files as well.+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 requires more testing before I'm comfortable "releasing" it. 
 + 
 +<file bash svg2pdf-d> 
 +#!/bin/bash 
 + 
 +# DESTRUCTIVELY convert all svg files in working directory to pdf. 
 +# Source file extension is case sensitive! 
 + 
 +# Requires inkscape, gxmessage. 
 +# Mithat Konar 2013 <http://mithatkonar.com> 
 + 
 +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 
 + 
 +#----------------------------------------------------------------------- 
 +# Below is an alternative to the approach used above that does not use a 
 +# temp file. It isn't optimal because it restarts inkscape for each file. 
 +# However the simplicity lends itself to porting (e.g., to windows BAT.). 
 + 
 +#~ for file in $FILES 
 +#~ do 
 +    #~ base=$(basename $file ${EXT}) 
 +    #~ inkscape --without-gui ${OPTIONS} ${file} --export-pdf=${base}.pdf 
 +#~ done 
 +#~ ## END ALT_1 
 +</file> 
kicad/good_pdf_output_from_kicad.txt · Last modified: 2013/06/26 02:18 by mithat

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki