gsch2pdf.sh

#!/bin/bash

tmpdir="/tmp"
tmpfile=`mktemp "$tmpdir/gsch2pdf.XXXXXX"`

if [ "$1" = "-size" ]; then
  CONSTANT_SCALE=false;
  shift;
else
  CONSTANT_SCALE=true;
fi

# write script for printing from gschem
init_sch2pdf() {
  if $CONSTANT_SCALE; then
    echo '(output-type "current window")' > ${tmpfile}.scm
    echo '(view-zoom-full)' >> ${tmpfile}.scm
    echo '(paper-size 47.0 111.0)' >> ${tmpfile}.scm
  else
    echo '(paper-size 3.5 9.0)' > ${tmpfile}.scm
  fi
  cat >> ${tmpfile}.scm << EOF
  (output-orientation "portrait")
  (output-color "disabled")
  (gschem-use-rc-values)
  (gschem-postscript "dummyfilename")
  (gschem-exit)
EOF

  cat > ${tmpfile}.rc << EOF
  (component-library ".")
EOF
}

convert_sch2pdf() { (
  set -e
  base_name=`basename $1`
  base_name="${base_name%.sch}"
  
  cd $2
  # to należy wykonać w katalogu projektu ze względu na możliwość występowania tam plików pomocniczych
  gschem -q -o ${tmpfile}.ps -s ${tmpfile}.scm -r ${tmpfile}.rc "$base_name.sch" &> /dev/null
  
  cd $tmpdir
  #grep -v 'scale$' ${tmpfile}.ps | grep -v 'translate$' |
  #  sed 's#2 setlinecap#2 setlinecap\n0.04 0.04 scale\n-27500 -33000 translate#g' > ${tmpfile}
  # mv ${tmpfile} ${tmpfile}.ps
  
  if $CONSTANT_SCALE; then
    ps2eps -O -n -P -l -q ${tmpfile}.ps
  else
    ps2epsi ${tmpfile}.ps ${tmpfile}.eps
  fi
  epstopdf ${tmpfile}.eps* -o ${tmpfile}.pdf
  
  # optional write png
  if [ "$3" = "true" ]; then
    # convert ${tmpfile}.pdf "$2/$base_name.png"
    pdftoppm ${tmpfile}.pdf ${tmpfile}
    pnmtopng ${tmpfile}-*1.ppm > "$2/$base_name.png" 2> /dev/null
  fi
  
  # move pdf to workdir
  mv ${tmpfile}.pdf "$2/$base_name.pdf"
) }

base_pwd=$PWD
for f in "$@"; do
  init_sch2pdf
  convert_sch2pdf "$f" "$base_pwd" "true" || echo "sch2pdf fail for $f" > /dev/stderr
  rm ${tmpfile}*
done

XHTML generated by highlight (http://www.andre-simon.de/) from gsch2pdf.sh



Copyright (c) 1999-2015, Robert Paciorek (http://www.opcode.eu.org/), BSD/MIT-type license


Redystrybucja wersji źródłowych i wynikowych, po lub bez dokonywania modyfikacji JEST DOZWOLONA, pod warunkiem zachowania niniejszej informacji o prawach autorskich. Autor NIE ponosi JAKIEJKOLWIEK odpowiedzialności za skutki użytkowania tego dokumentu/programu oraz za wykorzystanie zawartych tu informacji.

This text/program is free document/software. Redistribution and use in source and binary forms, with or without modification, ARE PERMITTED provided save this copyright notice. This document/program is distributed WITHOUT any warranty, use at YOUR own risk.

Valid XHTML 1.1 Dokument ten (URL: http://www.opcode.eu.org/usage_and_config/toolbox4electronic/soft4electronic/gsch2pdf.sh) należy do serwisu OpCode. Autorem tej strony jest Robert Paciorek, wszelkie uwagi proszę kierować na adres e-mail serwisu: webmaster@opcode.eu.org.
Data ostatniej modyfikacji artykulu: '2015-09-06 23:16:26 (UTC)' (data ta może być zafałszowana niemerytorycznymi modyfikacjami artykułu).