使用脚本自动提取所有 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

示例输出: enter image description here

相关内容