Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Краткий ответ: Чтобы рисовать SVG-текст в Python, создайте элемент <text> с
create_element_ns(), задайте атрибуты x, y, font-family, font-size, fill и text-anchor через
set_attribute(), установите text_content, добавьте текст в корень SVG и сохраните документ.
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")В этой статье вы узнаете, как:
<text> в Python;x и y;font-family, font-size, fill и text-anchor;<tspan>.SVG-текст остается настоящим текстом в SVG-разметке. Его можно выделять, искать, локализовать, стилизовать и позже редактировать. Если нужно преобразовать текст в векторные контуры для финальной графики или вывода, не зависящего от установленных шрифтов, используйте векторизацию текста. Для более широкой справки по SVG-разметке смотрите руководство SVG Text.
| Атрибут или элемент | Назначение |
|---|---|
x, y | Задают положение базовой линии текста |
font-family | Указывает нужное семейство шрифтов |
font-size | Задает размер текста в единицах SVG |
fill | Задает цвет текста |
text-anchor | Выравнивает текст относительно координаты x |
<tspan> | Добавляет позиционированные фрагменты или простой многострочный текст |
Используйте этот рабочий процесс, когда генерируемой SVG-графике нужны метки, подписи, бейджи или текст внутри диаграмм:
SVGDocument.width, height и viewBox, если создаете новый документ.<text> с
create_element_ns().x, y, font-size, font-family, fill и text-anchor, с
set_attribute().text_content или добавьте дочерние элементы <tspan>.append_child() и сохраните документ через
document.save().Следующий пример создает небольшую SVG-метку с фоновым прямоугольником и текстом по центру. Используйте text-anchor="middle", когда координата x должна обозначать горизонтальный центр текста.
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)Положение текста по вертикали контролируется базовой линией y, а не верхним краем букв. Если нужно точное визуальное центрирование по вертикали, подберите значение y или используйте метрики шрифта в собственной логике раскладки.
Иллюстрация показывает результат: скругленный прямоугольник служит простым фоном метки, а text-anchor="middle" выравнивает подпись SVG Text относительно центральной x-координаты.

<tspan>Используйте <tspan>, когда одному текстовому блоку нужны несколько строк или независимо позиционированные фрагменты. Следующий пример создает один элемент <text> и добавляет в него два дочерних <tspan> с разными позициями y.
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)Обе строки принадлежат одному элементу <text>, но у каждого <tspan> есть собственная позиция и возможность переопределять атрибуты стиля, например fill.
Иллюстрация показывает двухстрочный SVG-текст. Первый <tspan> рисует темный заголовок, а второй <tspan> использует отдельную позицию y и синее значение fill для подзаголовка.

| Проблема | Исправление |
|---|---|
| Текст не виден | Задайте fill, проверьте x и y, убедитесь, что текст находится внутри viewBox |
| Текст выглядит слишком высоко или низко | Помните, что y задает базовую линию текста, а не верхний край |
| Выравнивание по центру не работает | Задайте text-anchor="middle" и используйте нужный центр как значение x |
| Многострочный текст накладывается | Дайте каждому <tspan> отдельное значение y или осторожно используйте интервал dy |
| Текст отображается иначе на другом компьютере | Используйте распространенные шрифты или преобразуйте финальную графику в векторные пути, если важна независимость от шрифтов |
Создайте элемент <text> с create_element_ns(), задайте атрибуты x, y, font-family, font-size и fill, установите text_content, добавьте элемент в корень SVG и сохраните SVG.
Задайте text-anchor="middle" и установите x в нужную горизонтальную центральную точку. Подберите y для положения базовой линии.
Да. Используйте один элемент <text> с несколькими дочерними <tspan>. Задайте каждому <tspan> свои значения x и y или используйте контролируемый интервал dy.
Рисуйте обычный SVG-текст, когда текст должен оставаться редактируемым, доступным для поиска или локализации. Векторизуйте текст только для финальной графики, которая должна сохранять точные контуры глифов без зависимости от установленных шрифтов.
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.