
Sé que puedo extraer una vista única de un .ipe
archivo con iperender -eps -view 3 a.ipe a3.eps
.
Quiero crear un script que tome un .ipe
archivo como argumento y extraiga todas las vistas, independientemente de cuántas vistas .ipe
tenga el archivo.
Para eso necesito una función para contar las vistas en el .ipe
archivo. Podría intentar extraer vista por vista hasta que falle, pero parece una solución inevitable. Entonces, si iperender
falla por una razón diferente, fallaría silenciosamente.
¿Existe alguna ipe
herramienta relacionada que simplemente imprima la cantidad de vistas en un .ipe
archivo?
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 view
etiquetas al principio. Con, xmllint
por 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