
Я знаю, что могу извлечь одно представление из .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