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
- Dodaj pakiet Aspose.Words dla .NET NuGet do projektu Instalacja Przewodnik.
- Konfiguruj licencję mierzoną raz w aplikacji startup Licencjonowanie według zużycia .
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
, iviewBox
. - 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.