Ich frage mich, ob es ein Kommandozeilen-Werkzeug gibt, das verschachtelte Gruppen mit Transformationen in einem SVG abflacht?
In meinem speziellen Fall konvertiere ich ein von einer CAD-Software erstelltes PDF in SVG und füge dann einige Elemente hinzu und publiziere das modifizierte SVG auf einer Webseite zur Ansicht. Die Reaktionszeit des SVG ist sehr träge (zum Schwenken und Zoomen) und ich fand, dass dies auf eine sehr große Anzahl von verschachtelten Gruppen innerhalb des SVG zurückzuführen ist, oft bis zu mehreren 100 Tiefen. Für jedes Element im SVG muss der Browser die Position über alle übergeordneten Knoten berechnen ...
Offensichtlich ist das lächerlich, denn all diese Elemente brauchen eine einzige Transformation (Matrix). Ich frage mich also, ob jemand ein Werkzeug kennt, um dies zu reduzieren (oder eine C # - oder Delphi-Implementierung, die dies tun würde ...).
Das Beste, was ich gefunden habe, ist Svgo Ссылка Aber es ist immer noch nicht zufriedenstellend. SVGOs Ziel ist es, eine kleinere SVG-Datei zu erstellen. Das bedeutet, wenn eine Umwandlung eine kleinere SVG-Datei erlaubt, wird sie beibehalten. Meine Zwecke sind OP ähnlich, aber etwas anders. Ich bin auf der Suche nach etwas, das den SVG einfach abflachen und komplett vereinfachen kann. Elemente.
Danke Delapouite,
Inzwischen habe ich dieses gefunden: ( PStill ). Es macht eine perfekte Arbeit der Abflachung der Struktur (PDF zu PDF), aber das resultierende SVG enthält immer noch eine Menge Elemente, die es für einen Browser ziemlich unbrauchbar machen. Es ist wirklich das Problem, was CAD-Systeme zu PDF produzieren: Viele sehr kleine Pfade statt eines längeren Pfades. Ich bin mir ziemlich sicher, dass es noch Platz für Optimierungen gibt ... eines Tages: -)
Du kannst es mit SVG Cleaner versuchen. Es ist leider ein GUI-Tool, also entspricht es nicht wirklich Ihren Anforderungen, aber es bietet eine Stapelverarbeitungs-Philosophie, die nützlich werden könnte.
Es gibt eine Option, um Transformationen im Inkscape-Grafikeditor zu reduzieren.
Sie können also die Inkscape-Terminalbefehle verwenden, um dies zu erreichen, aber Sie müssen schauen, ob ein solcher Befehl existiert.
Ich bin neu in Inkscape, aber alt zu GIMP.
Ich stelle fest, dass Inkscape einen "extensions" -Ordner hat, in dem sich Python-Programme befinden.
Ich vermute, dass Inkscape eine ähnliche Funktionalität (obwohl es in der Hilfe nicht sofort offensichtlich war) auf GIMP hat, indem es Benutzern erlaubt, ihre eigenen benutzerdefinierten Erweiterungen zu schreiben. In GIMP automatisieren die einfachsten Skripts einfach die manuellen Schritte, die Benutzer in einem ihrer Workflows aus Menüs auswählen.
Es ist jedoch eine anspruchsvollere Verarbeitung möglich, als in Menüs angeboten wird.
Tags und Links svg nested transformation flatten