Extraiga todas las vistas de ipe automatizadas con un script

Extraiga todas las vistas de ipe automatizadas con un script

Sé que puedo extraer una vista única de un .ipearchivo con iperender -eps -view 3 a.ipe a3.eps.

Quiero crear un script que tome un .ipearchivo como argumento y extraiga todas las vistas, independientemente de cuántas vistas .ipetenga el archivo.

Para eso necesito una función para contar las vistas en el .ipearchivo. Podría intentar extraer vista por vista hasta que falle, pero parece una solución inevitable. Entonces, si iperenderfalla por una razón diferente, fallaría silenciosamente.

¿Existe alguna ipeherramienta relacionada que simplemente imprima la cantidad de vistas en un .ipearchivo?

Respuesta1

El formato de archivo IPE es xml, por lo que puede utilizar herramientas xml generales para ello. Por ejemplo la siguiente página IPE que contiene dos vistas, una con un rectángulo y otra con dos rectángulos:

<page>
<layer name="alpha"/>
<layer name="beta"/>
<view layers="alpha" active="alpha"/>
<view layers="alpha beta" active="beta"/>
<path layer="alpha" stroke="orange">
16 832 m
16 800 l
48 800 l
48 832 l
h
</path>
<path layer="beta" stroke="orange">
64 784 m
64 816 l
32 816 l
32 784 l
h
</path>
</page>

Puedes ver las dos viewetiquetas al principio. Con, xmllintpor ejemplo (hay muchas otras herramientas posibles), puede extraer el número de etiquetas (dehttps://stackoverflow.com/a/35576314/):

xmllint --xpath "count(//view)" myfile.ipe

Pon esto en un pequeño script bash:

nrviews=`xmllint --xpath "count(//view)" $1`
fbase=`basename "$1"`
fname="${fbase%.*}"
for VIEW in $(seq 1 $nrviews)
do
    iperender -eps -view $VIEW $1 $fname.$VIEW.eps
done

Salida de ejemplo: ingrese la descripción de la imagen aquí

información relacionada