User Tools

Site Tools


kicad:svg2pdf-dgxmessage

Differences

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

Link to this comparison view

kicad:svg2pdf-dgxmessage [2013/06/26 03:22] (current)
mithat created
Line 1: Line 1:
 +<file bash svg2pdf-dgxmessage>​
 +#!/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|xmessage.
 +
 +EXT=.svg
 +OPTIONS=""​
 +
 +SCRIPTNAME="​$(basename $0)"
 +
 +if which gxmessage > /dev/null ; then
 +    XMESSAGE="​gxmessage -title $SCRIPTNAME"​
 +    YES_BUTTON="​GTK_STOCK_YES"​
 +    NO_BUTTON="​GTK_STOCK_NO"​
 +else
 +    XMESSAGE=xmessage
 +    YES_BUTTON="​Yes"​
 +    NO_BUTTON="​No"​
 +fi
 +
 +# Make list of files to be processed.
 +FILES=$(ls -1 *${EXT} 2>/​dev/​null) || { $XMESSAGE "​Nothing to convert. (No *${EXT} files found.)";​ exit 1; }
 +
 +# Get confirmation from user to continue.
 +$XMESSAGE \
 +  -buttons "​$NO_BUTTON:​1,​$YES_BUTTON:​0"​ \
 +  -default "​$YES_BUTTON"​ \
 +"​Desctructively convert the following to PDF?
 +
 +$FILES"​ || exit 1
 +
 +# Make a temp file to store batch commands.
 +CMDFILE=$(mktemp) || { $XMESSAGE "​Error:​ Could not create temp file.";​ 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.
 +$XMESSAGE "​Processing files ..." &
 +pid=$!
 +DISPLAY= inkscape ${OPTIONS} --shell < $CMDFILE
 +rm -f $CMDFILE
 +kill $pid
 +
 +# 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
 +    $XMESSAGE \
 +      "The following files were not deleted:
 +$not_deleted"​
 +fi
 +
 +exit $rv
 +
 +</​file>​
kicad/svg2pdf-dgxmessage.txt · Last modified: 2013/06/26 03:22 by mithat