Aspose.Words SVG File Processor для .NET

Aspose.Words SVG File Processor для .NET позволяет программировать, модифицировать и сохранить СВГ графики из ваших приложений .NET. Потому что Aspose.Words не родом Загрузка SVG как формат документа, этот плагин предназначен для использования в сочетании с конвертерными плагинами (например, DOCX/HTML/PDF/SVG) или любым ввозным потоком, который производит маркировку СВГ.

Инсталляция и установка

Примечание: Этот плагин обеспечивает поверхность API, сосредоточенную на SVG, которая дополняет, а не заменяет основные функции Aspose.Words.

Особенности и способности

Создание документа SVG

  • Настройка нового SVG в коде, установка width, height, и viewBox.
  • Выберите абсолютные единицы (px, mm, in) или полагайтесь на viewBox для ответного выхода.

Формы и пути

  • Создайте и редактируйте элементы рект , круг и эллипс.
  • Полная паута командная поддержка (M/L/H/V/C/S/Q/T/A/Z) с опциями сегмента ввода/удаления, трансформации и удаления/заполнения.

Текст и типография

  • Добавить <text> и <tspan> узлы с фамилией шрифта, размером, весом, перемещением базовой линии, пространством буквы/словы и анкеры (start/middle/end).
  • Применить CSS-подобное стилирование в строении или через повторные классовые определения.

Группировка & Layering

  • Организуйте контент с <g> Группы; применять трансформации на уровне группы (перевод / скала / ротация / шев).
  • Нестные группы на зеркальные иерархии в стиле слоя.

Градиенты, шаблоны, фильтры

  • Определите **линейные/радиальные градиенты ** , патрины и ссылайтесь на них по ИД.
  • Присоединяйте фильтры (плав, тень, цветная матрица) для продвинутых визуальных эффектов.

Изображение Embedded

  • Вставьте растерные изображения через <image> Использование внешних УРИ или данных Base64.
  • Контрольное расположение, размеры (с сохранениемAspectRatio) и непроницаемость.

Интеграция конвертера

  • Типичный поток: **Import ** (например, DOCX→SVG) → **Refine ** с процессором файлов SVG (подготавливать цвета, добавлять водные знаки, оптимизировать маршруты) • Save СВГ.
  • Сохранить или переписать идентификаторы, классы и дефы во время послепроцесса.

Сериализация и экспорт

  • Сохранить компактный или довольно печатанный SVG.
  • Опционально вводить ресурсы (фонты/изображения) или держать их внешними.
  • Убедитесь, что стандартная маркировка совместима с современными рендерами.

Быстрый старт: создание документа SVG

// Pseudocode for the plugin’s SVG API surface

var svg = new SvgDocument(width: 800, height: 400, viewBox: "0 0 800 400");

// Background rectangle
var bg = svg.AddRect(x: 0, y: 0, width: 800, height: 400);
bg.Fill = "#ffffff";

// Title text
var title = svg.AddText("Quarterly Sales", x: 400, y: 40);
title.FontFamily = "Segoe UI";
title.FontSize = 24;
title.TextAnchor = SvgTextAnchor.Middle;

// A sample path (rounded shape)
var path = svg.AddPath("M40,120 C120,20 280,20 360,120 S600,220 720,120");
path.Stroke = "#0066cc";
path.StrokeWidth = 3;
path.Fill = "none";

// Group with transform
var g = svg.AddGroup();
g.Transform = "translate(60, 220) scale(1.2)";
g.AddCircle(cx: 0, cy: 0, r: 8).Fill = "#ff6a00";
g.AddText("Marker", x: 16, y: 4).FontSize = 12;

// Save to file/stream
using var fs = File.Create(@"C:\out\diagram.svg");
svg.Save(fs, prettyPrint: true);

Пост-процесс импортируемого SVG (DOCX → SvG → tweak → save)

// Assume 'svgMarkup' comes from a converter plugin (e.g., Document → Save as SVG)
var svg = SvgDocument.LoadFromString(svgMarkup);

// Example: recolor all elements with class="accent"
foreach (var el in svg.Query(".accent"))
    el.Fill = "#1abc9c";

// Add a watermark group
var wm = svg.AddGroup();
wm.Opacity = 0.08;
wm.Transform = "rotate(-20 400 200)";
var wText = wm.AddText("CONFIDENTIAL", x: 400, y: 220);
wText.TextAnchor = SvgTextAnchor.Middle;
wText.FontFamily = "Segoe UI";
wText.FontSize = 64;
wText.Fill = "#000000";

svg.Save(@"C:\out\refined.svg");

Советы и лучшие практики

  • Используйте viewBox с относительными координатами для реагирующей графики.
  • Группа мудро : используйте трансформации для групп вместо per-element для упрощения маркировки.
  • Введите defs (градиенты, шаблоны, символы, фильтры) в верхнюю часть и ссылку ID.
  • Сохраняйте большие битмапы ** внешние** для меньших SVG; введите только небольшие активы.
  • Предпочтитель **pretty-print ** во время разработки; minify в производстве.
  • Иницијализуйте метровую лицензию рано, чтобы избежать перерывов.

Управление ошибками и валидация

  • Процессор подтверждает необходимые атрибуты, идентификаторы и ссылки.
  • Ясные исключения для нарушенных путей, недействительных трансформаций или отсутствия defs и целей.
  • Опциональный режим «огненный» может преодолеть некритические проблемы и продолжить сериализацию.

Performance

  • Загрузка / сохранение для больших документов.
  • Повторно использовать определения градиента/фильтра, чтобы избежать дублирования узлов.
  • Вопрос через легкие селекторы (по ID/класс/име) для быстрого редактирования.
 Русский