Ich weiß, dass ich mit eine einzelne Ansicht aus einer .ipe
Datei extrahieren kann iperender -eps -view 3 a.ipe a3.eps
.
Ich möchte ein Skript erstellen, das eine .ipe
Datei als Argument verwendet und alle Ansichten extrahiert, unabhängig davon, wie viele Ansichten die .ipe
Datei hat.
Dafür brauche ich eine Funktion, die die Ansichten in der .ipe
Datei zählt. Ich könnte einfach versuchen, Ansicht für Ansicht zu extrahieren, bis es fehlschlägt, aber das scheint eine unvorstellbare Lösung zu sein. Wenn es dann iperender
aus einem anderen Grund fehlschlägt, würde es stillschweigend fehlschlagen.
Gibt es ein ipe
entsprechendes Tool, das einfach die Anzahl der Aufrufe in einer .ipe
Datei ausgibt?
Antwort1
Das IPE-Dateiformat ist XML, daher können Sie hierfür allgemeine XML-Tools verwenden. Beispielsweise enthält die folgende IPE-Seite zwei Ansichten, eine mit einem Rechteck und eine andere mit zwei Rechtecken:
<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
Sie können die beiden Tags am Anfang sehen . Mit xmllint
beispielsweise (es gibt viele andere mögliche Tools) können Sie die Anzahl der Tags extrahieren (aushttps://stackoverflow.com/a/35576314/):
xmllint --xpath "count(//view)" myfile.ipe
Fügen Sie dies in ein kleines Bash-Skript ein:
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