Ändere den Inhalt von Textelementen in Svg auf einem node.js-Server

8

Ich benutze svg.js sowie svgdom auf einem Node / Express-Server, um zu versuchen, ein svg zu manipulieren und es später in ein PNG umzuwandeln, um daraus ein PDF zu erstellen.

Momentan habe ich es soweit gemacht

%Vor%

Hier ist das Layout des SVG

%Vor%

Ich sehe, dass es eine get() -Methode gibt, die einen Index akzeptiert, aber der einzige Weg, wie ich an die ersten Textelemente gelangen kann, ist wie folgt ...

%Vor%

Ich bin mir nicht sicher, warum ich zuerst ein zweites Element und dann den tatsächlichen Index des Elements auswählen muss, das ich versuchen möchte

Außerdem bin ich mir nicht sicher, was ich mit einem set machen soll, was die .select() -Methode zurückgeben soll, kann ich das Textelement mit seinem Klassennamen irgendwie auswählen und dann seinen Index bekommen oder irgendwie den Text ändern?

Auch der Versuch, den Text dieses Elements an dieser Stelle zu ändern, funktioniert nicht

%Vor%

Gibt mir diesen Fehler

%Vor%

Ich versuche nur, den Text für die Textelemente .first-name und .last-name in dieser SVG-Datei zu ändern, und dann kann ich das an eine Funktion weiterleiten, die es in ein PNG konvertiert, das gehen wird in eine PDF-Seite generiert wird.

Kann mir jemand helfen, zu verstehen, wie ich das in dieser Bibliothek erreichen kann? Ich bin seit Stunden hier gewesen.

BEARBEITEN

Ich habe in cheerio geladen und kann so auf das Element zugreifen, habe aber immer noch Probleme damit, den Text zu ändern. Ich kann anscheinend immer noch keinen Verweis auf ein SVG.js-Element bekommen

%Vor%     
Jordan 25.12.2017, 03:59
quelle

2 Antworten

6

Zu Ihrer Cheerio-Bearbeitung können Sie den Textinhalt der Knoten mit

ändern %Vor%

Und dann erhalten Sie die Zeichenfolge der gesamten aktualisierten Datei mit

%Vor%     
niorad 27.12.2017, 20:42
quelle
0

Seitenfragen

Wenn Sie SVG-Inhalte von einer Datei in Ihre Svg importieren, sieht das nach dem Import so aus:

%Vor%

Mit svg.get(2) bekommst du deine svg Instanz zurück. Mit dem folgenden get(8) haben Sie Ihr Textelement.

Das SVG.Set , das du von select() zurückbekommst, ist mehr oder weniger ein schickes Array. svg.js hat eine ziemlich gute Dokumentation auf svgjs.com, wo dies gut erklärt wird. Sie können auf Elemente eines Sets mit get(index), first(), last() zugreifen.

Lösung der echten Frage

Was Sie jedoch erreichen wollen, ist ziemlich einfach. Holen Sie sich einfach die Elemente direkt nach ID:

%Vor%     
Fuzzyma 15.02.2018 10:42
quelle

Tags und Links