スクリプトで自動化されたすべてのipeビューを抽出します

スクリプトで自動化されたすべてのipeビューを抽出します

.ipeを使用すると、ファイルから単一のビューを抽出できることがわかっていますiperender -eps -view 3 a.ipe a3.eps

.ipeファイルを引数として受け取り、ファイルに含まれるビューの数に関係なく、すべてのビューを抽出するスクリプトを作成したいと考えています.ipe

そのためには、ファイル内のビューをカウントする関数が必要です.ipe。失敗するまでビューごとに抽出を試みることはできますが、これは無駄な解決策のようです。その後、別の理由で失敗した場合はiperender、何も表示されずに失敗します。

ipeファイル内のビューの数だけを出力する関連ツールはありますか.ipe?

答え1

IPE ファイル形式は xml なので、一般的な xml ツールを使用できます。たとえば、次の IPE ページには 2 つのビューが含まれており、1 つは長方形で、もう 1 つは 2 つの長方形です。

<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冒頭に2つのタグがあります。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

出力例: ここに画像の説明を入力してください

関連情報