Извлечение всех представлений ipe автоматизировано с помощью скрипта

Извлечение всех представлений ipe автоматизировано с помощью скрипта

Я знаю, что могу извлечь одно представление из .ipeфайла с расширением iperender -eps -view 3 a.ipe a3.eps.

Я хочу создать скрипт, который принимает .ipeфайл в качестве аргумента и извлекает все представления, независимо от того, сколько представлений .ipeимеет файл.

Для этого мне нужна функция для подсчета просмотров в .ipeфайле. Я мог бы просто попытаться извлечь просмотр за просмотром, пока это не даст сбой, но это кажется невыполнимым решением. Затем, если iperenderпроизойдет сбой по другой причине, он даст сбой молча.

Есть ли какой-либо ipeинструмент, который просто выводит количество просмотров в .ipeфайле?

решение1

Формат файла IPE — xml, поэтому для этого можно использовать общие инструменты xml. Например, следующая страница IPE содержит два представления, одно с прямоугольником, а другое с двумя прямоугольниками:

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

Вы можете увидеть два viewтега в начале. xmllintНапример, (есть много других возможных инструментов) вы можете извлечь количество тегов (изhttps://stackoverflow.com/a/35576314/):

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

Поместите это в небольшой 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

Пример вывода: введите описание изображения здесь

Связанный контент