
Eu sei que posso extrair uma única visualização de um .ipe
arquivo com a extensão iperender -eps -view 3 a.ipe a3.eps
.
Quero criar um script que receba um .ipe
arquivo como argumento e extraia todas as visualizações, independente de quantas visualizações o .ipe
arquivo possui.
Para isso preciso de uma função para contar as visualizações do .ipe
arquivo. Eu poderia apenas tentar extrair visão por visão até falhar, mas isso parece uma solução inútil. Então, se iperender
falhar por um motivo diferente, falhará silenciosamente.
Existe alguma ipe
ferramenta relacionada que apenas imprima a quantidade de visualizações em um .ipe
arquivo?
Responder1
O formato do arquivo IPE é xml, portanto você pode usar ferramentas xml gerais para isso. Por exemplo, a seguinte página IPE que contém duas visualizações, uma com um retângulo e outra com dois retâ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>
Você pode ver as duas view
tags no início. Com xmllint
, por exemplo (existem muitas outras ferramentas possíveis), você pode extrair o número de tags (dehttps://stackoverflow.com/a/35576314/):
xmllint --xpath "count(//view)" myfile.ipe
Coloque isso em um pequeno 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