Extraia todas as visualizações ipe automatizadas com um script

Extraia todas as visualizações ipe automatizadas com um script

Eu sei que posso extrair uma única visualização de um .ipearquivo com a extensão iperender -eps -view 3 a.ipe a3.eps.

Quero criar um script que receba um .ipearquivo como argumento e extraia todas as visualizações, independente de quantas visualizações o .ipearquivo possui.

Para isso preciso de uma função para contar as visualizações do .ipearquivo. Eu poderia apenas tentar extrair visão por visão até falhar, mas isso parece uma solução inútil. Então, se iperenderfalhar por um motivo diferente, falhará silenciosamente.

Existe alguma ipeferramenta relacionada que apenas imprima a quantidade de visualizações em um .ipearquivo?

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 viewtags 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

Exemplo de saída: insira a descrição da imagem aqui

informação relacionada