# Mithat Konar (the wiki)

### Site Tools

 — kicad:svg2pdf-dgxmessage [2013/06/26 03:22] (current)mithat created 2013/06/26 03:22 mithat created 2013/06/26 03:22 mithat created Line 1: Line 1: + ​ + #!/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 + +