User Tools

Site Tools


programacion:shellscripts:mgp

Scripts para MagicPoint

mgp2any

El siguiente script genera presentaciones en distintos formatos a partir de los fucntes de MagicPoint

#!/bin/sh
# (C) 2006 Joaquin herrero
# Los ficheros mgp deben de estar codificados en UTF-8 para que mgp los pueda usar
# Sin embargo las utilidades de conversión piden que los ficheros mgp estén en iso-8859-1
#
# La utilidad mgp2ps no puede leer el fichero de la entrada estandard, sino que hay que
# especificar el nombre del fichero en la linea de comandos, lo cual impide usar un 
# pipe entre el iconv y el mgp2ps. La solucion es crear un fichero intermedio en /tmp
#
# Para generar más de una página por hoja, hay que procesar el Postscript con "pstops"
#
# Generacion de paginas HTML a partir del MagicPoint:
#    htmldir debe de estar creado y debe ser usado un dir para cada presentacion
#    requiere instalar libjpeg-progs para generar los jpeg (cjpeg/djpeg)
#    requiere instalar netpbm para generar los thumbnails de los jpeg (pnmscale)
# mgp -D htmldir -E png -g 1024x768 file.mgp

_PREFIJO=JHP`date +%s`
_TEMPDIR=/tmp

for i in $*
do
  echo "Processing $i"
  _THISTEMP=${_TEMPDIR}/${_PREFIJO}_${i}

  # Creamos un temporal en iso-8859-1 que sera el que procesemos para pasar a Postcript
  iconv -c -f utf-8 -t iso-8859-1 $i > $_THISTEMP
  mgp2ps -c  -p a4   -e iso-8859-1  -f ${i}.ps   $_THISTEMP
  # rm $_THISTEMP

  # A partir de aqui procesamos el Postcript para generar de él todos los demás formatos

  # Convertimos de Postscript a PDF
  ps2pdf ${i}.ps ${i}.pdf

  # Generamos una pagina por cada 2 paginas del original
  #pstops '2:0L@.7(21cm,0)+1L@.7(21cm,14.85cm)' ${i}.ps ${i}.ps2

  # Generamos una pagina por cada 4 paginas del original
  # pstops '4:0@.5(0,14.5cm)+1@.5(10.5cm,14.5cm)+2@.5(0,0.5)+3@.5(10.5cm,0.5)' ${i}.ps ${i}.ps4

done

chkmgp

Comprueba si las referencias externas de un .mgp

#!/bin/bash
# chkmgp (C) 2006 Joaquin Herrero
#
# Muestra errores en las referencias a archivos de imagenes en las presentaciones mgpZZZZ
#
echo
echo "chkmgp 1.0 - Check mgp - (C) 2006 Joaquin Herrero"
_TMPFILE=/tmp/usedimages
_ERRORES=0


echo
echo "Fase 1: Analisis por presentacion"
echo "---------------------------------"
for i in *mgp
 do
   echo
   echo $i
   _diapo=`grep -h "^%page" $i | wc -l | awk '{print $1}'`
   _imag=`grep -h "^%newimage" $i | wc -l | awk '{print $1}'`
   echo "   $_diapo dispositivas"
   echo "   $_imag imagenes"
   #
   # Dependencias
   #
   grep -h "^%include" $i | sed 's/^%[^"]*"//' | sed 's/".*$//' | sort | uniq > $_TMPFILE
   if [ -s $i ]
     then
     echo "`cat $_TMPFILE`"
   fi
 done

echo
echo "Fase 2: Totales"
echo "---------------"
echo "`ls *mgp | wc -l | awk '{print $1}'` ficheros fuente de presentaciones"
echo "`grep -h '^%page.*' *mgp | wc -l | awk '{print $1}'` dispositivas en total"

grep -h  '^%newimage.*' *mgp | sed 's/^%[^"]*"//' | sed 's/".*$//' | sort | uniq > $_TMPFILE
echo "`wc -l $_TMPFILE | awk '{print $1}'` imagenes distintas"

#
# Comprobacion de imagenes
#

echo
echo "Fase 3: Checking for errors..."
echo "------------------------------"

for i in `cat $_TMPFILE`
 do
   if [ ! -s $i ]
     then
       echo
       echo "ERROR: \"$i\" no existe"
       grep -l $i *mgp
     fi
 done



grep -h  '^%include.*' *mgp | sed 's/^%[^"]*"//' | sed 's/".*$//' | sort | uniq > $_TMPFILE
for i in `cat $_TMPFILE`
 do
   if [ ! -s $i ]
     then
       echo
       echo "ERROR: \"$i\" no existe"
       grep -l $i *mgp
     fi
 done
echo
echo "done."
programacion/shellscripts/mgp.txt · Last modified: 2007/04/17 11:21 by jherrero