Procesor plików SVG Aspose.Words dla .NET

Aspose.Words SVG File Processor dla .NET pozwala programowo zbudować, modyfikować i zapisać SVG grafiki z aplikacji .NET. Ponieważ Aspose.Words nie jest native ładunek SVG jako format dokumentu, plugin ten ma być używany wraz z wtyczki konwerterów (np. DOCX/HTML/PDF/SVG) lub wszelkich upstream importu, który wytwarza markup SV G. Następnie można naprawić swg (formy edycji, ścieżki, tekst, style) i serializować wynik zgodny z standardami.

Instalacja i ustawienie

Uwaga: Ten wtyczka zapewnia powierzchnię API skoncentrowaną na SVG, która uzupełnia, nie zastępuje, podstawowe funkcje Aspose.Words.

Cechy i zdolności

Tworzenie dokumentów SVG

  • Instaluj nowy SVG w kodzie, ustaw width, height, i viewBox.
  • Wybierz absolutne jednostki (px, mm, w) lub uzależnij się od widoków dla reakcyjnego wyjścia.

Formy i ścieżki

  • Stwórz i edytuj elementy rect , circle , ellipse i line oraz polygon.
  • Pełna obsługa polecenia Path (M/L/H/V/C/S/Q/T/A/Z) z opcjami wkładu / usunięcia segmentu, transformacji i wypełniania.

Tekst i typografia

  • Dodaj <text> i <tspan> węzły z rodziną czcionek, wielkość, waga, przepływ bazy, przestrzeń litery/słowa i podkładki (start/middle/end).
  • Stosować styling podobny do CSS w trybie lub za pośrednictwem ponownych definicji klas.

Gromadzenie & Layering

  • Zorganizuj treści z <g> grupy; zastosować transformacje na poziomie grupy (tłumaczenie / skala / rotacja / ślew).
  • Grupa gniazd do lustra warstw stylowych hierarchii.

Gradienty, wzory, filtry

  • Określenie **linearnych / radialnych gradientów ** , patterny i odniesienie do nich ID.
  • Dostosuj filtry (blur, cienie, matryca kolorów) do zaawansowanych efektów wizualnych.

Zdjęcie wbudowane

  • Wprowadź obrazy rasterów za pomocą <image> Wykorzystanie zewnętrznych URI lub danych bazowych64.
  • Ustawienie sterowania, rozmiar (z zachowaniem AspectRatio) i nieprzyjemność.

Integracja konwertera

  • Typowy przepływ: **Import ** (np. DOCX→SVG) → **Refine ** z procesorem plików SVG (zastosowanie kolorów, dodanie znaków wodnych, optymalizacja ścieżek) ← Zachowaj SVB.
  • Utrzymanie lub ponowne pisanie identyfikatorów, klas i deficytów podczas post-przetwarzania.

Serializacja i eksport

  • Zapisz kompaktowe lub prosta drukowane SVG.
  • Opcjonalnie wprowadzanie zasobów (fonty / obrazy) lub ich utrzymanie na zewnątrz.
  • Upewnij się, że standardowy markup jest kompatybilny z nowoczesnymi renderami.

Szybki start: tworzenie dokumentu 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);

Post-proces importowany 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");

Porady i najlepsze praktyki

  • Użyj widoków z współrzędnikami relacyjnymi dla grafiki reakcyjnej.
  • Grupy mądrze : zastosować transformacje do grup zamiast per-element, aby ułatwić markup.
  • Umieścić defs (gradienty, wzory, symbole, filtry) na górze i odwołać się do ID.
  • Utrzymuj duże bitmapy ** zewnętrzne** dla mniejszych SVG; wprowadź tylko małe aktywa.
  • Prefer **pretty-print ** podczas rozwoju; minify w produkcji.
  • Inicjalizuj mierzone licencje wcześnie, aby uniknąć przerw.

Rozwiązanie błędów i weryfikacja

  • Procesor potwierdza wymagane atrybuty, identyfikatory i referencje.
  • Jasne wyjątki dla zniekształconych dróg, nielegalnych transformacji lub brakujących defs do celów.
  • Opcjonalny tryb „lenient” może pozbyć się nie krytycznych problemów i kontynuować serializację.

Performance

  • Przepływ ładowania / oszczędności dla dużych dokumentów.
  • Ponownie używaj definicji gradientów/filterów, aby uniknąć podwójnych węzłów.
  • Pytanie za pośrednictwem lekkich selektorów (przez ID / klasę / nazwę) do szybkich edycji.
 Polski