.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