PORóWNANIE

QuestPDF vs IronPDF: Przewodnik porównania technicznego

Kiedy programiści .NET oceniają rozwiązania do generowania plików PDF,QuestPDFiIronPDFoferują różne podejścia do tworzenia dokumentów.QuestPDFzapewnia płynny interfejs API typu "code-first" do programowego tworzenia dokumentów, podczas gdyIronPDFwykorzystuje renderowanie HTML/CSS za pośrednictwem silnika Chromium. Niniejsze porównanie techniczne analizuje obie biblioteki pod kątem aspektów, które mają największe znaczenie dla profesjonalnych programistów i architektów podejmujących decyzje dotyczące generowania plików PDF dla aplikacji .NET w 2025 roku i później.

Zrozumienie QuestPDF

QuestPDF to nowoczesna biblioteka zaprojektowana specjalnie do programowego generowania plików PDF w języku C#. W przeciwieństwie do bibliotek oferujących konwersję HTML do PDF,QuestPDFkoncentruje się na funkcjonalności API układu programowego. Biblioteka sprawdza się doskonale w sytuacjach, w których programiści muszą generować dokumenty od podstaw przy użyciu kodu C#, bez polegania na HTML.

QuestPDF wykorzystuje płynny interfejs API, który pozwala programistom na ekspresyjne opisywanie układów dokumentów. Takie podejście zapewnia precyzyjną kontrolę nad stylem i strukturą dokumentu, dzięki czemu nadaje się szczególnie do dokumentów opartych w dużej mierze na szablonach, takich jak certyfikaty, odznaki lub faktury.

Biblioteka działa w oparciu o model licencyjny oparty na przychodach: jest bezpłatna dla firm, których roczne przychody brutto nie przekraczają 1 miliona dolarów, ale wymaga zakupu licencji powyżej tego progu. Model ten wymaga również od organizacji wykazania poziomu przychodów, co stanowi czynnik wymagający uwzględnienia pod kątem zgodności podczas oceny.

Istotne ograniczenie:QuestPDFnie obsługuje konwersji HTML do PDF. Pomimo tego, że biblioteka ta jest często polecana na forach programistów do konwersji HTML do PDF, wykorzystuje ona własny, zastrzeżony język układu, który wymaga nauki zupełnie nowego języka DSL zamiast wykorzystania istniejących umiejętności internetowych.

Zrozumienie IronPDF

IronPDF zapewnia pełne możliwości konwersji HTML do PDF dzięki silnikowi renderującemu Chromium. Biblioteka konwertuje standardowy HTML, CSS i JavaScript na dokumenty PDF, umożliwiając programistom wykorzystanie istniejących umiejętności tworzenia stron internetowych i zasobów projektowych.

Oprócz generowania plików PDF,IronPDFoferuje funkcje manipulacji plikami PDF, takie jak scałanie, dzielenie, edycja i zabezpieczanie dokumentów. Biblioteka wykorzystuje prosty model licencjonowania na programistę, bez audytów opartych na przychodach ani wymagań dotyczących licencji klienta.

Podstawowa różnica architektoniczna

Podstawowa różnica międzyQuestPDFaIronPDFpolega na podejściu do tworzenia dokumentów:

Funkcja QuestPDF IronPDF
HTML do PDF Nieobsługiwane Obsługiwane
Stylizacja CSS Nieobsługiwane Pełny CSS3
Istniejące szablony Należy stworzyć od podstaw Ponowne wykorzystanie zasobów HTML/CSS
Kompatybilność narzędzi projektowych None Każde narzędzie do projektowania stron internetowych
Krzywa uczenia się Nowy zastrzeżony język DSL Przeniesienie umiejętności internetowych
Podgląd układu Wymaga wtyczki IDE Podgląd w dowolnej przeglądarce

Ta różnica architektoniczna wpływa na każdy aspekt procesu tworzenia oprogramowania, od tworzenia szablonów po konserwację i współpracę.

Generowanie oparte na kodzie a generowanie oparte na HTML

Wzory kodu służące do generowania dokumentów pokazują praktyczne implikacje podejścia każdej z bibliotek.

QuestPDFGenerowanie programowe

QuestPDF wymaga od programistów budowania dokumentów poprzez swój płynny interfejs API:

// NuGet: Install-Package QuestPDF
using QuestPDF.Fluent;
using QuestPDF.Helpers;
using QuestPDF.Infrastructure;

class Program
{
    static void Main()
    {
        QuestPDF.Settings.License = LicenseType.Community;

        Document.Create(container =>
        {
            container.Page(page =>
            {
                page.Size(PageSizes.A4);
                page.Margin(2, Unit.Centimetre);
                page.Content().Column(column =>
                {
                    column.Item().Text("Hello World").FontSize(20).Bold();
                    column.Item().Text("This is a paragraph of text.");
                });
            });
        }).GeneratePdf("output.pdf");
    }
}
// NuGet: Install-Package QuestPDF
using QuestPDF.Fluent;
using QuestPDF.Helpers;
using QuestPDF.Infrastructure;

class Program
{
    static void Main()
    {
        QuestPDF.Settings.License = LicenseType.Community;

        Document.Create(container =>
        {
            container.Page(page =>
            {
                page.Size(PageSizes.A4);
                page.Margin(2, Unit.Centimetre);
                page.Content().Column(column =>
                {
                    column.Item().Text("Hello World").FontSize(20).Bold();
                    column.Item().Text("This is a paragraph of text.");
                });
            });
        }).GeneratePdf("output.pdf");
    }
}
Imports QuestPDF.Fluent
Imports QuestPDF.Helpers
Imports QuestPDF.Infrastructure

Module Program
    Sub Main()
        QuestPDF.Settings.License = LicenseType.Community

        Document.Create(Sub(container)
                            container.Page(Sub(page)
                                               page.Size(PageSizes.A4)
                                               page.Margin(2, Unit.Centimetre)
                                               page.Content().Column(Sub(column)
                                                                         column.Item().Text("Hello World").FontSize(20).Bold()
                                                                         column.Item().Text("This is a paragraph of text.")
                                                                     End Sub)
                                           End Sub)
                        End Sub).GeneratePdf("output.pdf")
    End Sub
End Module
$vbLabelText   $csharpLabel

Takie podejście wymaga:

  • Nauka zastrzeżonego płynnego API QuestPDF
  • Ustawienie typu licencji przed utworzeniem dokumentu
  • Tworzenie struktury dokumentu za pomocą zagnieżdżonych wyrażeń lambda
  • Brak możliwości podglądu wyników bez budowania i uruchomienia kodu (chyba że używa się wtyczek IDE)

Tworzenie oparte na HTML w IronPDF

IronPDF akceptuje standardowy HTML do konwersji:

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a paragraph of text.</p>");
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a paragraph of text.</p>");
        pdf.SaveAs("output.pdf");
    }
}
Imports IronPdf

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a paragraph of text.</p>")
        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

PodejścieIronPDFumożliwia:

  • Wykorzystanie istniejących umiejętności HTML/CSS
  • Podgląd układów w dowolnej przeglądarce internetowej przed konwersją
  • Wykorzystanie frameworków CSS, takich jak Bootstrap lub Tailwind
  • Umożliwienie projektantom niezależnego wkładu w szablony

Porównanie generowania faktur

Generowanie dokumentów biznesowych ilustruje praktyczne różnice w przepływie pracy między bibliotekami.

Generowanie faktur w QuestPDF

// NuGet: Install-Package QuestPDF
using QuestPDF.Fluent;
using QuestPDF.Helpers;
using QuestPDF.Infrastructure;

class Program
{
    static void Main()
    {
        QuestPDF.Settings.License = LicenseType.Community;

        Document.Create(container =>
        {
            container.Page(page =>
            {
                page.Size(PageSizes.A4);
                page.Margin(2, Unit.Centimetre);
                page.Content().Column(column =>
                {
                    column.Item().Text("INVOICE").FontSize(24).Bold();
                    column.Item().Text("Invoice #: 12345").FontSize(12);
                    column.Item().PaddingTop(20);
                    column.Item().Text("Customer: John Doe");
                    column.Item().Text("Total: $100.00").Bold();
                });
            });
        }).GeneratePdf("invoice.pdf");
    }
}
// NuGet: Install-Package QuestPDF
using QuestPDF.Fluent;
using QuestPDF.Helpers;
using QuestPDF.Infrastructure;

class Program
{
    static void Main()
    {
        QuestPDF.Settings.License = LicenseType.Community;

        Document.Create(container =>
        {
            container.Page(page =>
            {
                page.Size(PageSizes.A4);
                page.Margin(2, Unit.Centimetre);
                page.Content().Column(column =>
                {
                    column.Item().Text("INVOICE").FontSize(24).Bold();
                    column.Item().Text("Invoice #: 12345").FontSize(12);
                    column.Item().PaddingTop(20);
                    column.Item().Text("Customer: John Doe");
                    column.Item().Text("Total: $100.00").Bold();
                });
            });
        }).GeneratePdf("invoice.pdf");
    }
}
Imports QuestPDF.Fluent
Imports QuestPDF.Helpers
Imports QuestPDF.Infrastructure

Module Program
    Sub Main()
        QuestPDF.Settings.License = LicenseType.Community

        Document.Create(Sub(container)
                            container.Page(Sub(page)
                                               page.Size(PageSizes.A4)
                                               page.Margin(2, Unit.Centimetre)
                                               page.Content().Column(Sub(column)
                                                                         column.Item().Text("INVOICE").FontSize(24).Bold()
                                                                         column.Item().Text("Invoice #: 12345").FontSize(12)
                                                                         column.Item().PaddingTop(20)
                                                                         column.Item().Text("Customer: John Doe")
                                                                         column.Item().Text("Total: $100.00").Bold()
                                                                     End Sub)
                                           End Sub)
                        End Sub).GeneratePdf("invoice.pdf")
    End Sub
End Module
$vbLabelText   $csharpLabel

Każdy element układu wymaga wyraźnych wywołań metod: Text() dla treści, FontSize() dla rozmiaru, Bold() dla wagi i PaddingTop() dla odstępów.

Generowanie faktur w IronPDF

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var htmlContent = @"
            <h1>INVOICE</h1>
            <p>Invoice #: 12345</p>
            <br/>
            <p>Customer: John Doe</p>
            <p><strong>Total: $100.00</strong></p>
        ";

        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("invoice.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var htmlContent = @"
            <h1>INVOICE</h1>
            <p>Invoice #: 12345</p>
            <br/>
            <p>Customer: John Doe</p>
            <p><strong>Total: $100.00</strong></p>
        ";

        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("invoice.pdf");
    }
}
Imports IronPdf

Class Program
    Shared Sub Main()
        Dim htmlContent As String = "
            <h1>INVOICE</h1>
            <p>Invoice #: 12345</p>
            <br/>
            <p>Customer: John Doe</p>
            <p><strong>Total: $100.00</strong></p>
        "

        Dim renderer As New ChromePdfRenderer()
        Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
        pdf.SaveAs("invoice.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

Podejście HTML wykorzystuje znany znacznik webowy: <h1> dla nagłówków, <p> dla akapitów, <br/> dla odstępów i <strong> dla emfazy. Ten szablon można podglądać w dowolnej przeglądarce i stylizować za pomocą CSS.

Implementacja nagłówków i stopek

Nagłówki i stopki w dokumentach pokazują różne podejścia do elementów na poziomie strony.

Nagłówki i stopki w QuestPDF

// NuGet: Install-Package QuestPDF
using QuestPDF.Fluent;
using QuestPDF.Helpers;
using QuestPDF.Infrastructure;

class Program
{
    static void Main()
    {
        QuestPDF.Settings.License = LicenseType.Community;

        Document.Create(container =>
        {
            container.Page(page =>
            {
                page.Size(PageSizes.A4);
                page.Margin(2, Unit.Centimetre);

                page.Header().Text("Document Header").FontSize(14).Bold();

                page.Content().Text("Main content of the document.");

                page.Footer().AlignCenter().Text(text =>
                {
                    text.Span("Page ");
                    text.CurrentPageNumber();
                });
            });
        }).GeneratePdf("document.pdf");
    }
}
// NuGet: Install-Package QuestPDF
using QuestPDF.Fluent;
using QuestPDF.Helpers;
using QuestPDF.Infrastructure;

class Program
{
    static void Main()
    {
        QuestPDF.Settings.License = LicenseType.Community;

        Document.Create(container =>
        {
            container.Page(page =>
            {
                page.Size(PageSizes.A4);
                page.Margin(2, Unit.Centimetre);

                page.Header().Text("Document Header").FontSize(14).Bold();

                page.Content().Text("Main content of the document.");

                page.Footer().AlignCenter().Text(text =>
                {
                    text.Span("Page ");
                    text.CurrentPageNumber();
                });
            });
        }).GeneratePdf("document.pdf");
    }
}
Imports QuestPDF.Fluent
Imports QuestPDF.Helpers
Imports QuestPDF.Infrastructure

Module Program
    Sub Main()
        QuestPDF.Settings.License = LicenseType.Community

        Document.Create(Sub(container)
                            container.Page(Sub(page)
                                               page.Size(PageSizes.A4)
                                               page.Margin(2, Unit.Centimetre)

                                               page.Header().Text("Document Header").FontSize(14).Bold()

                                               page.Content().Text("Main content of the document.")

                                               page.Footer().AlignCenter().Text(Sub(text)
                                                                                    text.Span("Page ")
                                                                                    text.CurrentPageNumber()
                                                                                End Sub)
                                           End Sub)
                        End Sub).GeneratePdf("document.pdf")
    End Sub
End Module
$vbLabelText   $csharpLabel

QuestPDF zapewnia metody Header() i Footer() dla obiektu strony, wraz z CurrentPageNumber() dla dynamicznego numerowania stron.

Nagłówki i stopki IronPDF

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var htmlContent = "<p>Main content of the document.</p>";

        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);

        pdf.Header = new TextHeaderFooter()
        {
            CenterText = "Document Header",
            FontSize = 14
        };

        pdf.Footer = new TextHeaderFooter()
        {
            CenterText = "Page {page}"
        };

        pdf.SaveAs("document.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var htmlContent = "<p>Main content of the document.</p>";

        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);

        pdf.Header = new TextHeaderFooter()
        {
            CenterText = "Document Header",
            FontSize = 14
        };

        pdf.Footer = new TextHeaderFooter()
        {
            CenterText = "Page {page}"
        };

        pdf.SaveAs("document.pdf");
    }
}
Imports IronPdf

Class Program
    Shared Sub Main()
        Dim htmlContent As String = "<p>Main content of the document.</p>"

        Dim renderer As New ChromePdfRenderer()
        Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)

        pdf.Header = New TextHeaderFooter() With {
            .CenterText = "Document Header",
            .FontSize = 14
        }

        pdf.Footer = New TextHeaderFooter() With {
            .CenterText = "Page {page}"
        }

        pdf.SaveAs("document.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

IronPDF stosuje nagłówki i stopki do wygenerowanego dokumentu PDF przy użyciu klasy TextHeaderFooter. Symbol zastępczy {page} automatycznie wstawia numery stron. Dla bardziej złożonych nagłówków,IronPDFrównież obsługuje nagłówki i stopki oparte na HTML z pełnymi stylami CSS.

Tabela porównawcza funkcji

Biblioteki różnią się znacząco w swoich zestawach funkcji poza podstawowym generowaniem:

Funkcja QuestPDF IronPDF
HTML do PDF Brak możliwości HTML do PDF Kompleksowa konwersja HTML do PDF
Programowalne generowanie PDF Płynne API dla precyzyjnej kontroli dokumentu Wspierane przez szablony HTML
Manipulacja plikami PDF None Scałanie, dzielenie i edycja
URL do PDF Nieobsługiwane Obsługiwane
Podpisy cyfrowe Nieobsługiwane Obsługiwane
Bezpieczeństwo PDF Nieobsługiwane Szyfrowanie i uprawnienia
Licencjonowanie Licencja MIT z ceną bazującą na przychodach (darmowa przychodach < $1M) Jasne licencjonowanie bez audytów przychodów
Wymaganie audytu przychodu Wymagane, jeśli przychody przekraczają $1M None

Przewodnik po mapowaniu API

Zespoły oceniające migrację zQuestPDFdoIronPDFmogą odnieść się do tego mapowania koncepcji:

KoncepcjaQuestPDF OdpowiednikIronPDF
Document.Create() new ChromePdfRenderer()
.Page() RenderHtmlAsPdf()
.Text() HTML <p>, <h1>, <span>
.Bold() CSS font-weight: bold
.FontSize(24) CSS font-size: 24px
.Image() HTML <img src="...">
.Table() HTML <table>
.Column() CSS display: flex; flex-direction: column
.Row() CSS display: flex; flex-direction: row
.PageSize() RenderingOptions.PaperSize
.Margin() RenderingOptions.Margin*
.GeneratePdf() pdf.SaveAs()
Nie dotyczy PdfDocument.Merge()
Nie dotyczy PdfDocument.FromFile()
Nie dotyczy pdf.SecuritySettings
Nie dotyczy pdf.Sign()

Kwestię licencjonowania

Model licencjonowaniaQuestPDFzasługuje na staranną ocenę:

Licencja społecznościowa QuestPDF:

  • Darmowa dla firm z mniej niż $1 milionem rocznego dochodu brutto
  • Wymaga ujawnienia przychodu i śledzenia zgodności
  • Klienci (nie tylko deweloperzy) mogą potrzebować licencji, jeśli przekraczają progi
  • Podobna do modelu licencjonowania iText/iTextSharp

Licencjonowanie IronPDF:

  • Jedna licencja na dewelopera
  • Brak audytów przychodów
  • Brak wymagań licencyjnych dla klientów
  • Jasne, przewidywalne koszty
  • Jednorazowa licencja, wdrażaj wszędzie

Dla organizacji blisko progu przychodów lub tych preferujących przewidywalne koszty licencjonowania, ta różnica znacząco wpływa na długoterminowe planowanie.

Wpływ na przepływ projektowania

Podejście kod-pierwszyQuestPDFtworzy implikacje dla przepływu pracy:

Z QuestPDF:

  • Każda zmiana projektu wymaga modyfikacji kodu C#
  • Projektanci nie mogą bezpośrednio przyczyniać się do szablonów
  • Podgląd wymaga wtyczek IDE lub budowania/uruchamiania kodu
  • Brak możliwości ponownego użycia istniejących szablonów e-mailowych HTML lub arkuszy stylów strony
  • Nie można wykorzystać frameworków CSS (Bootstrap, Tailwind)

Z IronPDF:

  • Projektanci mogą niezależnie tworzyć i modyfikować szablony HTML/CSS
  • Podgląd układów w dowolnej przeglądarce internetowej od razu
  • Użyj narzędzi deweloperskich przeglądarki do debugowania
  • Ponownie wykorzystaj istniejące komponenty systemu projektowania
  • Wykorzystaj dowolny silnik szablonowania HTML (Razor, Handlebars)

Kiedy zespoły rozważają migrację z QuestPDF

Kilka czynników skłania zespoły deweloperskie do oceny alternatyw dla QuestPDF:

Wymagania dotyczące zasobów HTML stają się przeszkodami, gdy organizacje mają istniejące szablony HTML, projekty e-mailowe lub arkusze stylów webowych, które chcą przekonwertować na PDF.QuestPDFwymaga odbudowy tych zasobów od podstaw w swoim zastrzeżonym DSL.

Potrzeby manipulacji PDF pojawiają się, gdy aplikacje wymagają scałenia dokumentów, dodania zabezpieczeń lub zastosowania podpisów cyfrowych.QuestPDFskupia się wyłącznie na generowaniu bez możliwości manipulacji.

Kompleksowość licencjonowania wpływa na planowanie, gdy organizacje zbliżają się do progu przychodów $1M lub wolą unikać śledzenia zgodności opartego na przychodach.

Wzory współpracy zmieniają się, gdy osoby nienależące do zespołu deweloperskiego muszą przyczyniać się do szablonów dokumentów. Podejście kod-pierwszyQuestPDFogranicza udział do deweloperów C#.

Tarcza robocza podglądu powoduje tarcia, gdy zespoły chcą szybko przechodzić przez iteracje projektowe.QuestPDFwymaga wtyczek IDE lub cyklu budowania do wizualizacji, podczas gdy szablony HTML można podglądać od razu w przeglądarkach.

Zalety i kompromisy

Atuty QuestPDF

  • Płynne API zapewnia precyzyjną kontrolę programistyczną
  • Precyzja projektu przekracza systemy oparte na HTML w niektórych zastosowaniach
  • Szybkie prototypowanie dla dynamicznych scenariuszy treści
  • Brak zależności od zewnętrznych silników renderujących
  • Darmowy dla organizacji z przychodami poniżej $1M

Ograniczenia QuestPDF

  • Brak możliwości HTML do PDF
  • Wymaga nauki zastrzeżonego DSL
  • Brak funkcji manipulacji PDF (scałanie, dzielenie, edycja)
  • Wymóg audytu przychodu dla zgodności licencyjnej
  • Wtyczka IDE wymagańa do podglądu
  • Projektanci nie mogą bezpośrednio edytować szablonów

Atuty IronPDF

  • Pełna konwersja HTML do PDF z renderowaniem Chromium
  • Wykorzystuje istniejące umiejętności w zakresie tworzenia stron internetowych
  • Kompleksowe możliwości manipulacji plikami PDF
  • Przejrzyste licencjonowanie dla poszczególnych programistów bez audytów
  • Podgląd szablonów w dowolnej przeglądarce
  • Umożliwia współpracę między projektantami a programistami

Uwagi dotyczące IronPDF

  • Komercyjny model licencjonowania
  • Wymaga silnika renderującego Chromium

Wnioski

QuestPDF iIronPDFsłużą do różnych zastosowań w zakresie generowania plików PDF.QuestPDFsprawdza się doskonale, gdy programiści potrzebują precyzyjnej programowej kontroli nad układem dokumentów i preferują podejście "code-first" bez zależności od HTML. Jego płynny interfejs API zapewnia ekspresyjną składnię dla wysoce spersonalizowanych dokumentów.

W przypadku aplikacji wymagających konwersji HTML do PDF, funkcji edycji plików PDF lub przepływów pracy zespołowej, w których projektanci współtworzą szablony,IronPDFzapewnia bardziej kompleksowe rozwiązanie. Możliwość ponownego wykorzystania istniejących zasobów HTML/CSS, podglądu w przeglądarkach oraz wykorzystania umiejętności tworzenia stron internetowych oferuje praktyczne korzyści w wielu scenariuszach programistycznych.

Oceniając migrację zQuestPDFdo IronPDF, zespoły powinny wziąć pod uwagę swoje konkretne wymagania dotyczące ponownego wykorzystania szablonów HTML, potrzeb związanych z obróbką plików PDF, preferencji licencyjnych oraz modeli współpracy. Dla zespołów, które w 2026 r. planują wdrożenie .NET 10 i C# 14 oraz intensywnie korzystają z technologii internetowych, oparte na HTML podejścieIronPDFw naturalny sposób wpisuje się w nowoczesne praktyki programistyczne.


Aby uzyskać wskazówki dotyczące wdrożenia, zapoznaj się z samouczkiem IronPDF dotyczącym konwersji HTML do PDF oraz dokumentacją obejmującą wzorce generowania plików PDF dla aplikacji .NET.