Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Réponse rapide: Pour dessiner du texte SVG en Python, créez un élément <text> avec
create_element_ns(), définissez les attributs x, y, font-family, font-size, fill et text-anchor avec
set_attribute(), définissez text_content, ajoutez le texte à la racine SVG et enregistrez le document.
1from aspose.svg import SVGDocument
2
3with SVGDocument() as document:
4 text = document.create_element_ns("http://www.w3.org/2000/svg", "text")
5 text.set_attribute("x", "20")
6 text.set_attribute("y", "40")
7 text.text_content = "Hello SVG"
8 document.root_element.append_child(text)
9 document.save("text.svg")Dans cet article, vous apprendrez à:
<text> en Python;x et y;font-family, font-size, fill et text-anchor;<tspan>.Le texte SVG reste du vrai texte dans le balisage SVG. Il peut être sélectionné, recherché, localisé, stylisé et modifié plus tard. Si vous devez convertir du texte en contours vectoriels pour une illustration finale ou un rendu indépendant des polices, utilisez plutôt la vectorisation du texte. Pour un contexte plus large sur le balisage SVG, consultez le guide SVG Text.
| Attribut ou élément | Utilisation |
|---|---|
x, y | Positionne la ligne de base du texte |
font-family | Choisit la famille de police demandée |
font-size | Définit la taille du texte en unités SVG |
fill | Définit la couleur du texte |
text-anchor | Aligne le texte par rapport à la coordonnée x |
<tspan> | Ajoute des fragments positionnés ou un texte multiligne simple |
Utilisez ce workflow lorsque les graphiques SVG générés nécessitent des libellés, légendes, badges ou du texte dans des diagrammes:
SVGDocument.width, height et viewBox sur la racine SVG si vous créez un nouveau document.<text> avec
create_element_ns().x, y, font-size, font-family, fill et text-anchor avec
set_attribute().text_content ou ajoutez des enfants <tspan>.append_child() et enregistrez le document avec
document.save().L’exemple suivant crée une petite étiquette SVG avec un rectangle d’arrière-plan et un texte centré. Utilisez text-anchor="middle" lorsque la coordonnée x doit représenter le centre horizontal du texte.
1import os
2from aspose.svg import SVGDocument
3
4namespace_uri = "http://www.w3.org/2000/svg"
5
6output_folder = "output/"
7output_path = os.path.join(output_folder, "svg-text-label.svg")
8os.makedirs(output_folder, exist_ok=True)
9
10with SVGDocument() as document:
11 svg = document.root_element
12 svg.set_attribute("width", "320")
13 svg.set_attribute("height", "120")
14 svg.set_attribute("viewBox", "0 0 320 120")
15
16 background = document.create_element_ns(namespace_uri, "rect")
17 background.set_attribute("x", "24")
18 background.set_attribute("y", "24")
19 background.set_attribute("width", "272")
20 background.set_attribute("height", "72")
21 background.set_attribute("rx", "12")
22 background.set_attribute("fill", "#f7f7fb")
23 background.set_attribute("stroke", "#546e7a")
24 background.set_attribute("stroke-width", "3")
25 svg.append_child(background)
26
27 label = document.create_element_ns(namespace_uri, "text")
28 label.set_attribute("x", "160")
29 label.set_attribute("y", "68")
30 label.set_attribute("text-anchor", "middle")
31 label.set_attribute("font-family", "Arial, sans-serif")
32 label.set_attribute("font-size", "26")
33 label.set_attribute("font-weight", "700")
34 label.set_attribute("fill", "#263238")
35 label.text_content = "SVG Text"
36 svg.append_child(label)
37
38 document.save(output_path)La ligne de base du texte est contrôlée par y, pas par le bord supérieur des lettres. Si le positionnement vertical doit être visuellement centré avec précision, ajustez la valeur y ou utilisez des métriques de police dans votre propre logique de mise en page.
L’illustration montre le résultat de l’exemple: un rectangle arrondi sert d’arrière-plan simple, et text-anchor="middle" aligne le libellé SVG Text autour de la coordonnée x centrale.

<tspan>Utilisez <tspan> lorsqu’un bloc de texte nécessite plusieurs lignes ou des fragments positionnés indépendamment. L’exemple suivant crée un élément <text> et ajoute deux enfants <tspan> avec des positions y différentes.
1import os
2from aspose.svg import SVGDocument
3
4namespace_uri = "http://www.w3.org/2000/svg"
5
6output_folder = "output/"
7output_path = os.path.join(output_folder, "svg-multiline-text.svg")
8os.makedirs(output_folder, exist_ok=True)
9
10with SVGDocument() as document:
11 svg = document.root_element
12 svg.set_attribute("width", "400")
13 svg.set_attribute("height", "120")
14 svg.set_attribute("viewBox", "0 0 400 120")
15
16 text = document.create_element_ns(namespace_uri, "text")
17 text.set_attribute("x", "200")
18 text.set_attribute("y", "48")
19 text.set_attribute("font-family", "Arial, sans-serif")
20 text.set_attribute("font-size", "22")
21 text.set_attribute("text-anchor", "middle")
22 text.set_attribute("fill", "#263238")
23
24 first_line = document.create_element_ns(namespace_uri, "tspan")
25 first_line.set_attribute("x", "200")
26 first_line.set_attribute("y", "48")
27 first_line.text_content = "Generated SVG Text"
28 text.append_child(first_line)
29
30 second_line = document.create_element_ns(namespace_uri, "tspan")
31 second_line.set_attribute("x", "200")
32 second_line.set_attribute("y", "84")
33 second_line.set_attribute("fill", "#2e86de")
34 second_line.text_content = "with Aspose.SVG for Python via .NET"
35 text.append_child(second_line)
36
37 svg.append_child(text)
38 document.save(output_path)Les deux lignes appartiennent au même élément <text>, mais chaque <tspan> possède sa propre position et peut remplacer des attributs de style comme fill.
L’illustration montre la sortie de texte SVG sur deux lignes. Le premier <tspan> dessine le titre sombre, et le second <tspan> utilise une position y distincte ainsi qu’une valeur fill bleue pour le sous-titre.

| Problème | Solution |
|---|---|
| Le texte n’est pas visible | Définissez fill, vérifiez x et y, et assurez-vous que le texte se trouve dans le viewBox |
| Le texte apparaît trop haut ou trop bas | Rappelez-vous que y positionne la ligne de base du texte, pas le bord supérieur |
| Le centrage ne fonctionne pas | Définissez text-anchor="middle" et utilisez le centre souhaité comme valeur x |
| Le texte multiligne se chevauche | Donnez à chaque <tspan> une valeur y séparée ou utilisez l’espacement dy avec prudence |
| Le texte est rendu différemment sur une autre machine | Utilisez des polices courantes ou convertissez l’illustration finale en chemins vectoriels si l’indépendance vis-à-vis des polices est importante |
Créez un élément <text> avec create_element_ns(), définissez les attributs x, y, font-family, font-size et fill, définissez text_content, ajoutez-le à la racine SVG et enregistrez le SVG.
Définissez text-anchor="middle" et définissez x sur le centre horizontal souhaité. Ajustez y pour la position de la ligne de base.
Oui. Utilisez un élément <text> avec plusieurs enfants <tspan>. Donnez à chaque <tspan> ses propres valeurs x et y, ou utilisez un espacement dy contrôlé.
Dessinez du texte SVG normal lorsqu’il doit rester éditable, recherchable ou localisable. Vectorisez le texte uniquement pour une illustration finale qui doit préserver les contours exacts des glyphes sans dépendre des polices installées.
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.