IRONSOFTWAREHOME
FILMY

Jak przekonwertować plik PDF na HTML w języku C#

Curtis Chau
Curtis Chau
Updated: 19 lipca 2026

Migracja zQuestPDFdo IronPDF przenosi twój workflow generowania PDF z C# API płynnego układu na standardowe podejście oparte na HTML/CSS z szerszymi możliwościami manipulacji PDF. Ten przewodnik dostarcza krok po kroku ścieżkę migracji, abyś mógł wykorzystać istniejące umiejętności webowe, ponownie użyć szablonów HTML i dodać funkcje, których rdzenna bibliotekaQuestPDFnie obejmuje.

Dlaczego warto przejść zQuestPDFna IronPDF

Zrozumienie QuestPDF

QuestPDF to nowoczesny, płynnie działający interfejs API stworzony specjalnie do programowego generowania plików PDF w języku C#. W przeciwieństwie do bibliotek oferujących kompleksową konwersję HTML na PDF, rdzenna bibliotekaQuestPDFjest ograniczona do programowego API układu.QuestPDFsprawdza się doskonale w sytuacjach, gdy programiści muszą generować dokumenty od podstaw przy użyciu kodu C#, bez polegania na HTML.

Tier społecznościowy jest darmowy w ramach warunków MIT dla osób indywidualnych, organizacji non-profit, FOSS i organizacji z rocznymi przychodami brutto poniżej 1 miliona USD. Powyżej tego proguQuestPDFoferuje licencję profesjonalną zaczynającą się od $999 (wieczysta, do 10 programistów) oraz licencję enterprise za $2,999 (wieczysta, ogólnofirmowa), które trzeba uwzględnić w długoterminowym planowaniu.

Główny problem: brak silnika HTML w rdzennej bibliotece

QuestPDF jest czasami polecane do konwersji HTML-do-PDF, ale podstawowa biblioteka nie renderuje HTML. Rozszerzenie utrzymywane przez społeczność QuestPDF.HTML obejmuje ograniczony podzbiór HTML/CSS, ale podstawowy silnik działa wyłącznie programowo i nie uruchamia prawdziwego silnika przeglądarki. Zespoły, które już mają szablony HTML/CSS, zazwyczaj muszą je przebudować w płynnej API.

FunkcjaQuestPDFIronPDF
HTML-to-PDF (core)Nieobsługiwane (tylko płynne API)Pełne wsparcie
HTML-do-PDF (rozszerzenie)Częściowe za pomocą QuestPDF.HTML (ograniczony podzbiór)Pełne wsparcie
Stylizacja CSSOgraniczone przez rozszerzeniePełny CSS3
Istniejące szablonyNależy stworzyć od podstawPonowne wykorzystanie zasobów HTML/CSS
Kompatybilność narzędzi projektowychNoneKażde narzędzie do projektowania stron internetowych
Krzywa uczenia sięNowe płynne API w C#Przeniesienie umiejętności internetowych
Podgląd układuAplikacja towarzyszącaPodgląd w dowolnej przeglądarce
Manipulacja plikami PDFŁączenie / wyodrębnianie / nakładanie / szyfrowanie (API Operacji na Dokumentach, 2024.12.0+)Łączenie, dzielenie, edytowanie, podpisywanie

IronPDF zapewnia natywne renderowanie HTML-do-PDF, które nie jest zawarte w jądrze QuestPDF, eliminując potrzebę ręcznego odtwarzania dokumentów w kodzie C#. Oferuje także funkcje manipulacji PDF, takie jak łączenie, dzielenie, edytowanie, zabezpieczanie i podpisywanie cyfrowe — API Operacji na DokumentachQuestPDF(2024.12.0+) obejmuje łączenie, wyodrębnianie stron, nakładki/podkładki, załączniki i szyfrowanie, ale nie edytowanie istniejącej treści, OCR, czy podpisy cyfrowe.

Model licencjonowania QuestPDF

Licencja wspólnotowaQuestPDF(zgodna z MIT) jest darmowa dla osób indywidualnych, organizacji non-profit, projektów FOSS i organizacji o rocznym dochodzie brutto poniżej 1 mln USD. Powyżej tego progu potrzebna jest licencja Professional za 999 USD (wieczysta, do 10 deweloperów) lub Enterprise za 2 999 USD (wieczysta, dla całej organizacji). Ponieważ głównym czynnikiem jest przychód twojej organizacji, a nie liczba miejsc, może to zmienić rozmowy z klientami oraz twoje własne licencjonowanie.

IronPDF oferuje komercyjną licencję na dewelopera: bez audytów przychodów, bez wymagań licencyjnych dla klientów i przewidywalne koszty.

Dla zespołów przyjmujących nowoczesne wersje .NET,IronPDF oferuje licencjonowanie na dewelopera bez wyzwalaczy opartych na przychodach oraz standardowe podejście HTML/CSS, które wykorzystuje istniejące umiejętności tworzenia stron internetowych.


Zanim zaczniesz

Wymagania wstępne

  1. Środowisko .NET: .NET Framework 4.6.2+ lub .NET Core 3.1+ / .NET 5/6/7/8/9+
  2. Dostęp do NuGet: Możliwość instalowania pakietów NuGet
  3. Licencja IronPDF: Uzyskaj klucz licencyjny na stronie ironpdf.com

Zmiany w pakiecie NuGet

# Remove QuestPDF
dotnet remove package QuestPDF

# Add IronPDF
dotnet add package IronPdf
SHELL

Konfiguracja licencji

// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

Znajdź zastosowanie QuestPDF

# Find allQuestPDFusages in your codebase
grep -r "QuestPDF\|Document.Create\|\.GeneratePdf" --include="*.cs" .
SHELL

Kompletna dokumentacija API

Zmiany w przestrzeni nazw

// Before: QuestPDF
using QuestPDF.Fluent;
using QuestPDF.Helpers;
using QuestPDF.Infrastructure;

// After: IronPDF
using IronPdf;

Mapowania podstawowych interfejsów API

KoncepcjaQuestPDFOdpowiednik IronPDF
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()CSSdisplay: flex; flex-direction: column
.Row()CSSdisplay: flex; flex-direction: row
PageSizes.A4RenderingOptions.PaperSize
.Margin()RenderingOptions.Margin*
.GeneratePdf()pdf.SaveAs()
Nie dotyczyPdfDocument.Merge()
Nie dotyczyPdfDocument.FromFile()
Nie dotyczypdf.SecuritySettings

Przykłady migracji kodu

Przykład 1: Podstawowe tworzenie dokumentów (HTML do PDF)

Przed (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("Hello World").FontSize(20).Bold();
                    column.Item().Text("This is a paragraph of text.");
                });
            });
        }).GeneratePdf("output.pdf");
    }
}

Po (IronPDF):

// 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");
    }
}

Ten przykład pokazuje różnicę w paradygmacie.QuestPDFwymaga nauki jego płynnej API: Document.Create(), container.Page(), page.Content().Column(), column.Item().Text(), ze stylizacją metodą łańcuchów jak .FontSize(20).Bold(). Musisz również ustawić typ licencji za pomocą QuestPDF.Settings.License = LicenseType.Community.

IronPDF używa standardowego HTML, który każdy programista webowy zna: <h1> dla nagłówków, <p> dla akapitów. Nie ma potrzeby nauki nowego DSL do układu. Podejście IronPDF oferuje czystszą składnię i integruje się z resztą nowoczesnego stosu .NET web. Kompleksowe przykłady można znaleźć w dokumentacji dotyczącej konwersji HTML do PDF.

Przykład 2: Generowanie faktur

Przed (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");
    }
}

Po (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");
    }
}

QuestPDF używa .Column() i .Item() do układu, z .PaddingTop(20) do rozstawienia.IronPDF używa standardowego HTML: <h1> dla tytułu, <p> dla akapitów, <br/> do rozstawienia, i <strong> dla tekstu pogrubionego.

Prawdziwa zaleta: dzięki IronPDF projektanci mogą samodzielnie tworzyć i modyfikować szablony HTML. W przypadkuQuestPDFkażda zmiana projektu wymaga od programisty C# modyfikacji kodu. Dowiedz się więcej z naszych samouczków.

Przykład 3: Nagłówki i stopki z numerami stron

Przed (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");
    }
}

Po (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");
    }
}

QuestPDF używa page.Header() i page.Footer() z metodami płynnymi jak .AlignCenter() i .CurrentPageNumber().IronPDF używa obiektów TextHeaderFooter z właściwościami jak CenterText i FontSize. Symbol zastępczy {page} automatycznie wstawia aktualny numer strony.


Ważne uwagi dotyczące migracji

Zmiana paradygmatu

Główna zmiana to przejście z niestandardowego płynnego API układu w C# na standardowe HTML/CSS:

// QuestPDF: Fluent C# layout API
container.Page(page =>
{
    page.Content().Column(column =>
    {
        column.Item().Text("Invoice").Bold().FontSize(24);
        column.Item().Row(row =>
        {
            row.RelativeItem().Text("Customer:");
            row.RelativeItem().Text("Acme Corp");
        });
    });
});

// IronPDF: Standard HTML/CSS
var html = @"
<div style='font-family: Arial; padding: 40px;'>
    <h1 style='font-weight: bold; font-size: 24px;'>Invoice</h1>
    <div style='display: flex; justify-content: space-between;'>
        <span>Customer:</span>
        <span>Acme Corp</span>
    </div>
</div>";

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

Konwersje wzorców układu

WzórQuestPDFOdpowiednik HTML/CSS
.Column()display: flex; flex-direction: column
.Row()display: flex; flex-direction: row
.RelativeItem()flex: 1
.Table()Element <table>
.PaddingTop(20)padding-top: 20px lub <br/>
.AlignCenter()text-align: center
.FontSize(24)font-size: 24px
.Bold()font-weight: bold lub <strong>

Konwersja ustawień strony

// QuestPDF
page.Size(PageSizes.A4);
page.Margin(2, Unit.Centimetre);

// IronPDF
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 20;    // mm (2cm = 20mm)
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;

Nowe możliwości po migracji

Po migracji do IronPDF zyskujesz możliwości, którychQuestPDFnie jest w stanie zapewnić:

Łączenie plików PDF

var cover = renderer.RenderHtmlAsPdf("<h1>Cover</h1>");
var content = renderer.RenderHtmlAsPdf(reportHtml);
var existing = PdfDocument.FromFile("appendix.pdf");

var merged = PdfDocument.Merge(cover, content, existing);
merged.SaveAs("complete.pdf");

Zabezpieczenia plików PDF

var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SecuritySettings.OwnerPassword = "admin";
pdf.SecuritySettings.UserPassword = "reader";
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
pdf.SaveAs("protected.pdf");

URL do pliku PDF

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.EnableJavaScript = true;

var pdf = renderer.RenderUrlAsPdf("https://example.com/report");
pdf.SaveAs("webpage.pdf");

Wczytuj i edytuj istniejące pliki PDF

var pdf = PdfDocument.FromFile("existing.pdf");
// Modify, merge, add security, etc.
pdf.SaveAs("modified.pdf");

Podsumowanie porównania funkcji

FunkcjaQuestPDFIronPDF
HTML do PDFCore: nieobsługiwane (ograniczone przez QuestPDF.HTML rozszerzenie)Główna funkcja
Krzywa uczenia sięPłynne API w C#Standardowe umiejętności w zakresie obsługi sieci WWW
Podgląd szablonuAplikacja towarzyszącaDowolna przeglądarka
Współpraca przy projektowaniuTylko dla programistówProjektanci + programiści
Istniejące zasobyKonieczna jest przebudowaPonowne wykorzystanie HTML/CSS
Manipulacja plikami PDFŁączenie / wyodrębnianie / nakładanie (API Operacji na Dokumentach, 2024.12.0+)Obsługiwane
Bezpieczeństwo/PodpisywanieSzyfrowanie + uprawnienia (bez podpisania cyfrowego)Szyfrowanie + podpis cyfrowy
Model licencyjnyOparte na przychodach (próg 1 mln USD)Na programistę
Wpływ na klientaMoże wymagać licencji powyżej przychodu 1 mln USDNone
Bootstrap/TailwindNieobsługiwaneObsługiwane
URL do pliku PDFNieobsługiwaneObsługiwane

Lista kontrolna migracji

Przed migracją

  • Identyfikuj wszystkie szablony dokumentówQuestPDF(Document.Create, .GeneratePdf)
  • Udokumentuj wzorce DSL używane (.Column(), .Row(), .Table(), .Text())
  • Przyporządkowanie metod stylizacji map do odpowiedników w CSS
  • Uzyskaj klucz licencyjny IronPDF ze strony ironpdf.com

Zmiany w pakiecie

  • Usuń pakiet NuGet QuestPDF
  • Zainstaluj pakiet NuGet IronPdf: dotnet add package IronPdf

Zmiany w kodzie

  • Zaktualizuj importy przestrzeni nazw
  • Usuń QuestPDF.Settings.License = LicenseType.Community
  • Przekształć wzorzec Document.Create() na ChromePdfRenderer + HTML
  • Zastąp .Column() / .Row() CSS Flexbox
  • Zastąp .Table() HTML elementami <table>
  • Przekształć .Text().Bold().FontSize(24) na <h1 style='...'>
  • Zastąp page.Header() / page.Footer() TextHeaderFooter
  • Zastąp .CurrentPageNumber() symbolem zastępczym {page}
  • Przekształć .GeneratePdf() na pdf.SaveAs()
  • Dodaj inicjalizację licencji podczas uruchamiania aplikacji

Po migracji

  • Wizualne porównanie pliku PDF
  • Sprawdź wielostronicowe dokumenty pod kątem poprawności podziałów stron
  • W razie potrzeby dodaj nowe funkcje (zabezpieczenia, scałanie, konwersja URL na PDF)

Zwróć uwagę: QuestPDF jest znakiem towarowym jego właściciela. Ta strona nie jest powiązana z, zatwierdzona przez lub sponsorowana przez Codeux Software lub członków zespołu QuestPDF. Wszystkie nazwy produktów, logo i marki są własnością ich odpowiednich właścicieli. Porównania mają charakter wyłącznie informacyjny i odzwierciedlają informacje dostępne publicznie w momencie pisania.
Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podręczników.

...
Czytaj więcej

Powiązane artykuły

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Your trial license will be sent to your email address

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Zarezerwuj swoje darmowe Demo na żywo
Booking Badge

Zaufane przez miliony inżynierów na całym świecie

Logotypy klientów Iron Software
Otrzymaj swoje Konsultacja Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta