User Tools

Site Tools


kicad:svg2pdf-dgxmessage
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
kicad/svg2pdf-dgxmessage.txt · Last modified: 2013/06/26 02:22 by mithat

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki