Jak przekonwertować PDF na SVG w C#

Ahmad Sohail
Ahmad Sohail
Updated: 18 września 2026

Przestrzeń nazw PdfToSvg w IronPDF udostępnia dedykowane API do konwersji stron PDF na skalowalną grafikę wektorową. SVG (Scalable Vector Graphics) to format oparty na XML, który pozostaje ostry przy dowolnym poziomie powiększenia: w przeciwieństwie do obrazów rastrowych (PNG, JPEG), wynik SVG nie ulega pikselozie podczas skalowania. Konwersja stron PDF do SVG jest przydatna do osadzania zawartości dokumentów na stronach internetowych, generowania podglądów niezależnych od rozdzielczości oraz wyodrębniania grafiki wektorowej z raportów, faktur czy rysunków technicznych.

Konwersja odbywa się dla każdej strony osobno: otwórz PDF za pomocą PdfDocument.Open(), uzyskaj dostęp do poszczególnych stron przez kolekcję Pages, a następnie wywołaj SaveAsSvg() lub ToSvgString() na każdej PdfPage, aby uzyskać wynik SVG. Wszystkie metody konwersji mają warianty asynchroniczne.

To jest kierunek PDF-do-SVG: wyodrębnianie wektorowego SVG z istniejących plików PDF. Odwrotny proces (osadzanie grafiki SVG w nowym PDF) opisano w instrukcji SVG do PDF.

Rozpocznij bezpłatny 30-dniowy okres próbny, aby przetestować konwersję PDF do SVG.

NuGetZainstaluj za pomocą NuGet

PM > Install-Package IronPdf

Install IronPDF by running the command above in the NuGet Package Manager Console, or search for the package in the NuGet Package Manager.

Poniższy przykład otwiera plik PDF i zapisuje jego pierwszą stronę jako plik SVG.

  1. 1Install IronPDF with NuGet Package Manager

    PM > Install-Package IronPdf

  2. 2Skopiuj i uruchom ten fragment kodu.

    using PdfToSvg;
    
    using var pdf = PdfDocument.Open("report.pdf");
    pdf.Pages[0].SaveAsSvg("page-one.svg");
  3. 3Wdrożenie do testowania w środowisku produkcyjnym

    Rozpocznij używanie IronPDF w swoim projekcie już dziś z darmową wersją próbną
    arrow pointer
Szybki start

Minimalny przebieg (3 kroki)

  1. Zainstaluj IronPDF przez NuGet: Install-Package IronPdf
  2. Otwórz PDF za pomocą PdfDocument.Open() z przestrzeni nazw PdfToSvg
  3. Wywołaj SaveAsSvg() na dowolnej stronie, aby zapisać plik SVG

Jak przekonwertować pojedynczą stronę PDF na SVG?

Klasa PdfPage udostępnia cztery metody konwersji:

  • SaveAsSvg(): zapisuje stronę do ścieżki pliku lub Stream.
  • SaveAsSvgAsync(): nieblokujący wariant SaveAsSvg().
  • ToSvgString(): zwraca kod SVG jako string, przydatny gdy wynik trafia do silnika szablonów, odpowiedzi HTTP lub dalszego przetwarzania.
  • ToSvgStringAsync(): nieblokujący wariant ToSvgString().

Wszystkie cztery przyjmują opcjonalny argument SvgConversionOptions oraz CancellationToken.

Poniższy przykład zapisuje pierwszą stronę do pliku, pobiera tę samą stronę jako string i zapisuje ją do strumienia. Pokazuje wszystkie trzy typy wyjścia.

using PdfToSvg;
using PdfDocument = PdfToSvg.PdfDocument;

using var pdf = PdfDocument.Open("invoice.pdf");

// Save to a file
pdf.Pages[0].SaveAsSvg("invoice-page1.svg");

// Get SVG as a string
string svgMarkup = pdf.Pages[0].ToSvgString();
Console.WriteLine($"SVG length: {svgMarkup.Length} characters");

// Save to a stream
using var stream = new FileStream("invoice-page1-stream.svg", FileMode.Create);
pdf.Pages[0].SaveAsSvg(stream);

PdfDocument implementuje IDisposable, więc opakowanie go w instrukcję using zwalnia natywne zasoby po zakończeniu konwersji. Kolekcja Pages jest indeksowana od zera, więc Pages[0] to pierwsza strona.

Zwróć uwagę: PdfToSvg.PdfDocument to inna klasa niż IronPdf.PdfDocument; dyrektywa using PdfToSvg; wprowadza ją do zakresu.

Kiedy PDF do SVG to właściwy wybór?

SVG to lepszy format wyjściowy, gdy strona będzie powiększana, osadzana w układzie strony internetowej lub stylizowana po konwersji: tekst pozostaje zaznaczalny i przeszukiwalny, a ścieżki edytowalne w narzędziach wektorowych. Dla stron zeskanowanych lub fotograficznych nie ma wektorowej zawartości do zachowania, więc eksport rastrowy jest mniejszy i nie traci jakości.

Jak przekonwertować wszystkie strony PDF na SVG?

Kolekcja Pages jest indeksowana od zera, więc dodanie jeden do indeksu pętli daje czytelny numer strony dla każdego pliku wyjściowego.

using PdfToSvg;
using PdfDocument = PdfToSvg.PdfDocument;

using var pdf = PdfDocument.Open("multi-page-report.pdf");

Console.WriteLine($"Total pages: {pdf.Pages.Count}");

for (int i = 0; i < pdf.Pages.Count; i++)
{
    var page = pdf.Pages[i];
    string outputPath = $"page_{i + 1}.svg";
    page.SaveAsSvg(outputPath);
    Console.WriteLine($"Saved: {outputPath}");
}
Zwróć uwagę: SVG nie obsługuje dokumentów wielostronicowych tak jak PDF, więc 10-stronicowy PDF daje 10 osobnych plików SVG.

Dla dużych dokumentów podejście asynchroniczne opisane w następnej sekcji pozwala uniknąć blokowania wątku aplikacji podczas konwersji.

Moją ulubioną biblioteką tego typu jest IronPDF. Umożliwia ona szybkie i efektywne manipulowanie plikami PDF. Posiada także wiele cennych funkcji, takich jak eksport do formatu PDF/A i cyfrowe podpisywanie dokumentów PDF.

Milan Jovanovic

Microsoft MVP

Zobacz studium przypadku

IronOCR pozwala nam oszczędzić 40 000 USD rocznie na ręcznym przetwarzaniu, jednocześnie zwiększając produktywność i uwalniając zasoby do zadań o wysokim wpływie. Gorąco polecam.

Brent Matzelle

Dyrektor technologiczny, OPYN

Zobacz studium przypadku

Jak używać metod asynchronicznych do konwersji PDF na SVG?

Warianty asynchroniczne, SaveAsSvgAsync() i ToSvgStringAsync(), przenoszą operacje I/O poza główny wątek. PdfDocument.OpenAsync() również ładuje PDF asynchronicznie. Te metody są odpowiednie w handlerach ASP.NET Core, usługach w tle lub każdej aplikacji z responsywnym interfejsem.

Poniższy przykład otwiera PDF i konwertuje każdą stronę asynchronicznie, dzięki czemu wątek wywołujący pozostaje wolny podczas pracy.

using PdfToSvg;
using PdfDocument = PdfToSvg.PdfDocument;

using var pdf = await PdfDocument.OpenAsync("dashboard.pdf");

for (int i = 0; i < pdf.Pages.Count; i++)
{
    var page = pdf.Pages[i];
    await page.SaveAsSvgAsync($"dashboard_page_{i + 1}.svg");
}

// Or get the SVG markup as a string
string firstPageSvg = await pdf.Pages[0].ToSvgStringAsync();

Jak skonfigurować opcje konwersji SVG?

SvgConversionOptions kontroluje sposób generowania wyjścia SVG. Najczęściej używane właściwości to:

  • IncludeAnnotations: ustaw na true, aby renderować warstwy adnotacji PDF w wyjściu SVG
  • IncludeLinks: ustaw na true, aby przenieść hiperłącza PDF jako elementy <a> w SVG, zachowując nawigację w przeglądarce
  • IncludeHiddenText: ujawnia tekst istniejący w strumieniu treści PDF, ale niewidoczny, przydatny dla dostępności lub pipeline'ów ekstrakcji tekstu
  • MinStrokeWidth: ustala minimalną szerokość linii (w jednostkach SVG) dla renderowanych ścieżek, zapobiegając zanikaniu cienkich linii przy normalnym powiększeniu

Kod poniżej włącza adnotacje i linki, ustawia minimalną szerokość linii, a następnie eksportuje każdą stronę z tymi opcjami.

using PdfToSvg;
using PdfDocument = PdfToSvg.PdfDocument;

var options = new SvgConversionOptions
{
    IncludeAnnotations = true,
    IncludeLinks = true,
    IncludeHiddenText = false,
    MinStrokeWidth = 0.5
};

using var pdf = PdfDocument.Open("annotated-report.pdf");

for (int i = 0; i < pdf.Pages.Count; i++)
{
    var page = pdf.Pages[i];
    page.SaveAsSvg($"page_{i + 1}.svg", options);
}

Dwie dodatkowe właściwości kontrolują sposób obsługi odstępów tekstu. CollapseSpaceEmbeddedFont i CollapseSpaceLocalFont ustalają progi (jako ułamek rozmiaru czcionki), poniżej których odstępy między sąsiednimi znakami są łączone w jeden ciąg tekstowy. Mniejsze wartości lepiej odwzorowują oryginalne odstępy; większe dają mniejsze pliki SVG.

Dla zaawansowanych zastosowań właściwość FontResolver przyjmuje niestandardowy resolver mapujący odwołania do czcionek PDF na lokalne zasoby czcionek, co jest niezbędne, gdy dokument źródłowy odwołuje się do czcionek nieosadzonych. Właściwość ImageResolver kontroluje, jak obrazy rastrowe w PDF są obsługiwane w SVG: kodowanie inline daje samodzielny plik SVG, a rozwiązywanie ścieżek zewnętrznych pozwala zachować kompaktowość SVG. Dokumentacja API SvgConversionOptions opisuje każdą konfigurowalną właściwość.

Jak kontrolować widoczność warstw PDF w wyjściu SVG?

Warstwowy PDF udostępnia swoje warstwy przez kolekcję OptionalContentGroups w PdfDocument. Każdy element to OptionalContentGroup, który łączy tylko do odczytu Name (etykieta warstwy z dokumentu źródłowego) z flagą Visible (do odczytu i zapisu). Ustawienie Visible decyduje, czy dana warstwa zostanie wyrenderowana podczas konwersji do SVG, więc jeden PDF może dać różne warianty SVG bez edycji pliku.

Nie musisz znać nazw warstw z góry. Kolekcja odzwierciedla warstwy faktycznie obecne w dokumencie, więc możesz ją enumerować, odczytać każdą Name i wyłączyć te, które chcesz ukryć. ToString() zwraca tę samą wartość co Name, co jest wygodne do logowania.

Poniższy przykład wypisuje każdą warstwę w PDF, ukrywa tę o nazwie Watermark i eksportuje pierwszą stronę z tą warstwą wyłączoną.

using PdfToSvg;
using PdfDocument = PdfToSvg.PdfDocument;

using var pdf = PdfDocument.Open("technical-drawing.pdf");

// List the layers that actually exist in this PDF
foreach (var layer in pdf.OptionalContentGroups)
{
    Console.WriteLine($"{layer.Name} visible: {layer.Visible}");
}

// Hide the watermark layer; every other layer stays visible
foreach (var layer in pdf.OptionalContentGroups)
{
    if (layer.Name == "Watermark")
    {
        layer.Visible = false;
    }
}

// Visibility set on OptionalContentGroups is applied during conversion
pdf.Pages[0].SaveAsSvg("drawing-no-watermark.svg");

Typowe zastosowanie to rysunek techniczny, gdzie warstwy adnotacji, wymiarów lub znaków wodnych należy przełączać niezależnie. Ponieważ widoczność ustawia się przy każdej konwersji, ten sam plik PDF może dać kilka wariantów SVG bez zmian w pliku.

Jak otwierać PDF-y ze strumieni i z hasłem?

PdfDocument.Open() przyjmuje zarówno Stream, jak i ścieżkę pliku. Parametr leaveOpen (domyślnie false) decyduje, czy strumień zostanie zamknięty po zwolnieniu dokumentu. Oba przeciążenia (ścieżka i strumień) przyjmują obiekt OpenOptions do konfiguracji, np. podania hasła dla zaszyfrowanych dokumentów, oraz CancellationToken do kooperatywnego anulowania w długotrwałych procesach.

Fragment otwiera PDF ze strumienia, zapisuje jego pierwszą stronę jako SVG, a następnie wypisuje, czy plik jest zaszyfrowany, jego tytuł i liczbę stron.

using PdfToSvg;
using PdfDocument = PdfToSvg.PdfDocument;

// Open from a stream (e.g., downloaded from a web API)
using var fileStream = File.OpenRead("document.pdf");
using var pdf = PdfDocument.Open(fileStream, leaveOpen: false);
pdf.Pages[0].SaveAsSvg("from-stream.svg");

// Check if a PDF is encrypted
Console.WriteLine($"Encrypted: {pdf.IsEncrypted}");

// Access document metadata
Console.WriteLine($"Title: {pdf.Info.Title}");
Console.WriteLine($"Pages: {pdf.Pages.Count}");

Właściwość Info udostępnia metadane dokumentu takie jak tytuł, autor i data utworzenia. Właściwość Permissions informuje, jakie operacje są dozwolone (drukowanie, kopiowanie), a IsEncrypted wskazuje, czy plik wymaga hasła do otwarcia.

Kolejne kroki

Przestrzeń nazw PdfToSvg konwertuje strony PDF do plików SVG, strumieni lub stringów. Działa per-strona, z pełną kontrolą nad adnotacjami, linkami, widocznością tekstu, szerokością linii i przełączaniem warstw. Wszystkie metody mają warianty asynchroniczne do nieblokujących przebiegów.

Poznaj dokumentację API PdfPage dla pełnej powierzchni metod konwersji, dokumentację SvgConversionOptions dla wszystkich opcji konfiguracyjnych oraz dokumentację PdfDocument dla opcji otwierania i ładowania. Odwrotny kierunek (osadzanie SVG w PDF) opisano w instrukcji SVG do PDF.

Zobacz opcje licencjonowania już od $999.

Często Zadawane Pytania

Jaki jest cel konwersji plików PDF do formatu SVG?

Konwersja plików PDF do formatu SVG pozwala na osadzanie treści dokumentu na stronach internetowych, generowanie podglądów niezależnych od rozdzielczości oraz wyodrębnianie grafiki wektorowej z raportów, faktur lub rysunków technicznych. SVG jest skalowalny i nie pikseluje się, co czyni go idealnym dla aplikacji internetowych i projektowych.

Jak można wykorzystać PdfToSvg z IronPDF do konwersji PDF do SVG?

Przestrzeń nazw PdfToSvg w IronPDF zapewnia dedykowane API do konwersji stron PDF do formatu SVG. Możesz otworzyć PDF za pomocą PdfDocument.Open(), uzyskać dostęp do poszczególnych stron przez kolekcję Pages, a następnie wywołać SaveAsSvg() lub ToSvgString() na każdej PdfPage, aby uzyskać wyjście SVG.

Czy strony PDF mogą być konwertowane na SVG asynchronicznie za pomocą IronPDF?

Tak, IronPDF obsługuje asynchroniczne konwersje PDF do SVG. Możesz użyć metod SaveAsSvgAsync() i ToSvgStringAsync(), aby utrzymać operacje I/O poza głównym wątkiem, co jest korzystne w aplikacjach responsywnych.

Czym są SvgConversionOptions w IronPDF?

SvgConversionOptions w IronPDF kontrolują, jak generowane jest wyjście SVG. Opcje obejmują, czy uwzględniać adnotacje, linki i ukryty tekst w wyjściu, a także ustawianie minimalnej szerokości linii. Te opcje pozwalają na dostosowanie procesu konwersji SVG.

Czy możliwe jest kontrolowanie widoczności warstw podczas konwersji PDF do SVG za pomocą IronPDF?

Tak, IronPDF pozwala na kontrolowanie widoczności warstw PDF za pomocą kolekcji OptionalContentGroups na PdfDocument. Możesz przełączać widoczność dla konkretnych warstw, co decyduje o tym, czy są one renderowane podczas konwersji SVG.

Jak IronPDF obsługuje zaszyfrowane pliki PDF do konwersji na SVG?

IronPDF może otwierać zaszyfrowane pliki PDF za pomocą obiektu OpenOptions, który obejmuje podanie hasła. To pozwala na konwersję zaszyfrowanych PDF do SVG po uwierzytelnieniu.

Jakie są korzyści z używania formatu SVG dla PDF w aplikacjach internetowych?

Format SVG jest korzystny dla aplikacji internetowych, ponieważ utrzymuje wysokiej jakości, skalowalną grafikę bez pikselizacji, obsługuje wybieralny i przeszukiwalny tekst oraz pozwala na modyfikacje stylu za pomocą CSS lub skryptów.

Czy IronPDF może konwertować wszystkie strony PDF na indywidualne pliki SVG?

Tak, IronPDF może konwertować wszystkie strony PDF na indywidualne pliki SVG. Iterując przez kolekcję Pages, możesz zapisać każdą stronę jako oddzielny plik SVG, co jest przydatne dla PDF-ów wielostronicowych.

Jakie są minimalne kroki, aby rozpocząć konwersję PDF do SVG za pomocą IronPDF?

Aby przekonwertować PDF na SVG za pomocą IronPDF, musisz zainstalować IronPDF przez NuGet, otworzyć PDF za pomocą PdfDocument.Open() z przestrzeni nazw PdfToSvg i wywołać SaveAsSvg() na dowolnej stronie, aby zapisać plik SVG.

Czy IronPDF obsługuje otwieranie PDF-ów ze strumieni do celów konwersji?

Tak, IronPDF obsługuje otwieranie PDF-ów ze strumieni. Możesz użyć PdfDocument.Open() z wejściem Stream, co czyni go wszechstronnym w scenariuszach, gdzie PDF-y nie są przechowywane jako pliki, ale są przesyłane strumieniowo z innych źródeł.

Ahmad to full-stack developer z solidnym fundamentem w C#, Pythonie i technologiach webowych. Ma głębokie zainteresowanie tworzeniem skalowalnych rozwiązań oprogramowania i cieszy się badaniem, jak projektowanie i funkcjonalność spotykają się w rzeczywistych aplikacjach.

Czytaj więcej

Gotowy, aby rozpocząć?

Nuget Downloads 21,916,531Wersja:2026.11właśnie wydany