IRONSOFTWAREHOME
FILMY

Jak używać JavaScript z HTML do PDF przy użyciu C#

Curtis Chau
Curtis Chau
Updated: 18 maja 2026

Dlaczego warto przejść zDynamicPDFna IronPDF?

Fragmentacja produktówDynamicPDFjest częstym motorem migracji. Zrozumienie modelu licencyjnego pomaga ocenić prawdziwe koszty bieżącej implementacji.

Problem fragmentacji produktów

DynamicPDF (ceTe Software) dostarcza funkcjonalność PDF jako oddzielnie licencjonowane pakiety:

  1. DynamicPDF Core Suite (ceTe.DynamicPDF.CoreSuite.NET, v12.43.0): Bundles Generator, Merger, and ReportWriter
  2. DynamicPDF HTML Converter (ceTe.DynamicPDF.HtmlConverter.NET, v3.3.0): HTML-na-PDF jako osobny dodatek
  3. DynamicPDF Converter (ceTe.DynamicPDF.Converter.NET, v3.32.0): Konwersja Office i 50+ formatów plików
  4. DynamicPDF PrintManager (ceTe.DynamicPDF.Printing.NET): Programatyczne drukowanie
  5. DynamicPDF Rasterizer (ceTe.DynamicPDF.Rasterizer.NET): PDF-to-image
  6. DynamicPDF Viewer (ceTe.DynamicPDF.Viewer.NET): Kontrola widoku WinForms/WPF

Generator, Merger i ReportWriter są zintegrowane w Core Suite, ale renderowanie HTML, rasteryzacja, drukowanie i przeglądanie wciąż wymagają oddzielnego zakupu.IronPDFłączy te funkcje w jednej bibliotece i licencji.

Porównanie architektur

AspektDynamicPDFIronPDF
Model produktuFragmentaryczne (5+ produktów)Biblioteka typu "wszystko w jednym"
LicencjonowanieWymagane są liczne licencjeLicencja pojedyncza
HTML do PDFOddzielny zakup dodatkuWbudowany, oparty na Chromium
Obsługa CSSOgraniczone (wymaga dodatku)Pełna obsługa CSS3 z Flexbox/Grid
Styl APIPozycjonowanie oparte na współrzędnychHTML/CSS + API do manipulacji
Krzywa uczenia sięSteep (wiele interfejsów API)Gentle (technologie internetowe)
Nowoczesny .NET.NET Standard 2.0 / .NET 6 / .NET 8 / .NET Framework 4.6.2.NET 6/7/8/9+ natywne

Kluczowe korzyści z migracji

  1. Pojedynczy pakiet: Jeden pakiet NuGet zastępuje 3–5 pakietów DynamicPDF
  2. Nowoczesne renderowanie: silnik Chromium a renderowanie tradycyjne
  3. Technologie internetowe: Użyj HTML/CSS zamiast pozycjonowania opartego na współrzędnych
  4. Prostsze API: mniej kodu, większa czytelność, łatwiejsza konserwacja
  5. Brak konieczności dokupowania dodatków: HTML, scałanie, zabezpieczenia – wszystko w cenie

Przygotowania przed migracją

Wymagania wstępne

Upewnij się, że Twoje środowisko spełnia następujące wymagania:

  • .NET Framework 4.6.2+ or .NET 6/7/8/9+
  • Visual Studio 2019+ lub VS Code z rozszerzeniem C#
  • Dostęp do menedżera pakietów NuGet
  • Klucz licencyjny IronPDF(bezpłatna wersja próbna dostępna na stronie ironpdf.com)

Audyt wykorzystania DynamicPDF

Uruchom te polecenia w katalogu rozwiązania, aby zidentyfikować wszystkie odwołania do DynamicPDF:

# Find allDynamicPDFreferences
grep -r "ceTe.DynamicPDF\|DynamicPDF" --include="*.cs" --include="*.csproj" .

# Check NuGet packages
dotnet list package | grep -i dynamic
SHELL

Typowe pakiety, na które należy zwrócić uwagę:

  • ceTe.DynamicPDF.CoreSuite.NET (Generator + Merger + ReportWriter)
  • ceTe.DynamicPDF.HtmlConverter.NET (HTML-na-PDF dodatek)
  • ceTe.DynamicPDF.Converter.NET (Office / multi-format to PDF)
  • ceTe.DynamicPDF.Rasterizer.NET, ceTe.DynamicPDF.Printing.NET, ceTe.DynamicPDF.Viewer.NET

Zrozumienie zmiany paradygmatu

Najważniejszą zmianą przy migracji zDynamicPDFdo IronPDF jest fundamentalne podejście do tworzenia dokumentów.DynamicPDFwykorzystuje pozycjonowanie oparte na współrzędnych, w którym elementy umieszcza się w określonych współrzędnych X,Y na stronie.IronPDF wykorzystuje renderowanie HTML/CSS, co pozwala projektować przy użyciu technologii internetowych.

Ta zmiana paradygmatu oznacza konwersję elementów Label, TextArea i Table2 na ich odpowiedniki HTML — zmiana ta zwykle skutkuje bardziej czytelnym i łatwiejszym do utrzymania kodem.

Proces migracji krok po kroku

Krok 1: Zaktualizuj pakiety NuGet

Usuń pakiety DynamicPDF, które rzeczywiście masz zainstalowane i dodaj IronPDF:

# RemoveDynamicPDFpackages (only those you actually have)
dotnet remove package ceTe.DynamicPDF.CoreSuite.NET
dotnet remove package ceTe.DynamicPDF.HtmlConverter.NET
dotnet remove package ceTe.DynamicPDF.Converter.NET
dotnet remove package ceTe.DynamicPDF.Rasterizer.NET
dotnet remove package ceTe.DynamicPDF.Printing.NET

# Install IronPDF
dotnet add package IronPdf
SHELL

Krok 2: Aktualizacja odniesień do przestrzeni nazw

Zastąp przestrzenie nazwDynamicPDFna IronPDF:

// Remove these
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.PageElements;
using ceTe.DynamicPDF.Merger;
using ceTe.DynamicPDF.Conversion;

// Add this
using IronPdf;

Krok 3: Skonfiguruj licencję

// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

Kompletna dokumentacja API

Mapowanie klas podstawowych

KlasaDynamicPDFOdpowiednik IronPDF
DocumentChromePdfRenderer
DocumentPdfDocument
PageHTML <div> z przerwą na stronę
MergeDocumentPdfDocument.Merge()
HtmlConverterChromePdfRenderer

Mapowanie elementów strony do HTML

DynamicPDF PageElementIronPDF/Równoważnik HTML
Label<p>, <span>, <div>
TextArea<div>, <p> z CSS
Image<img> tag
Table2HTML <table>
PageNumberingLabel{page} / {total-pages} zastępniki

Kluczowe mapowania API

DynamicPDFIronPDF
Document + PageChromePdfRenderer
Label, TextAreaHTML <p>, <div>
Table2HTML <table>
MergeDocumentPdfDocument.Merge()
HtmlConverterChromePdfRenderer
document.Draw()pdf.SaveAs() / pdf.BinaryData
PageNumberingLabel %%CP%%{page} zastępnik

Przykłady migracji kodu

Konwersja HTML do PDF

Konwersja HTML na PDF demonstruje wymógDynamicPDFna osobny dodatek HtmlConverter w przeciwieństwie do wbudowanego renderowania Chromium w IronPDF.

Wdrożenie DynamicPDF:

// NuGet: Install-Package ceTe.DynamicPDF.Converter.NET
// HTML-to-PDF is a separate add-on; CoreSuite alone does not include it.
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.Conversion;

class Program
{
    static void Main()
    {
        string html = "<html><body><h1>Hello World</h1></body></html>";
        HtmlConverter converter = new HtmlConverter(html);
        converter.Convert("output.pdf");
    }
}

Wdrożenie IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        string html = "<html><body><h1>Hello World</h1></body></html>";
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}

IronPDF's ChromePdfRenderer zapewnia renderowanie oparte na Chromium z pełnym wsparciem CSS3, bez konieczności zakupu osobnego dodatku. Aby uzyskać więcej opcji, zapoznaj się z dokumentacją dotyczącą konwersji HTML do PDF.

Łączenie wielu plików PDF

Scalanie PDF pokazuje różnicę między klasą MergeDocumentDynamicPDF(wymagająca licencji produktu Merger) a wbudowaną metodą statyczną Merge IronPDF.

Wdrożenie DynamicPDF:

// NuGet: Install-Package ceTe.DynamicPDF.CoreSuite.NET
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.Merger;

class Program
{
    static void Main()
    {
        MergeDocument document = new MergeDocument("document1.pdf");
        document.Append("document2.pdf");
        document.Draw("merged.pdf");
    }
}

Wdrożenie IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var pdf1 = PdfDocument.FromFile("document1.pdf");
        var pdf2 = PdfDocument.FromFile("document2.pdf");
        var merged = PdfDocument.Merge(pdf1, pdf2);
        merged.SaveAs("merged.pdf");
    }
}

Statyczna metoda MergeIronPDF akceptuje bezpośrednio wiele obiektów PdfDocument. Aby uzyskać więcej opcji, zapoznaj się z dokumentacją dotyczącą scałania plików PDF.

Dodawanie tekstu do plików PDF

Umiejscowienie tekstu ilustruje zmianę paradygmatu od elementów opartych na współrzędnych w DynamicPDF, do elementów opartych na HTML w IronPDF.

Wdrożenie DynamicPDF:

// NuGet: Install-Package ceTe.DynamicPDF.CoreSuite.NET
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.PageElements;

class Program
{
    static void Main()
    {
        Document document = new Document();
        Page page = new Page(PageSize.Letter);
        Label label = new Label("Hello from DynamicPDF!", 0, 0, 504, 100);
        page.Elements.Add(label);
        document.Pages.Add(page);
        document.Draw("output.pdf");
    }
}

Wdrożenie IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<html><body></body></html>");
        var textStamper = new TextStamper()
        {
            Text = "Hello from IronPDF!",
            FontSize = 20,
            VerticalAlignment = VerticalAlignment.Top
        };
        pdf.ApplyStamp(textStamper);
        pdf.SaveAs("output.pdf");
    }
}

TextStamperIronPDF zapewnia pozycjonowanie oparte na wyrównaniu zamiast umiejscowienia opartego na współrzędnych, co sprawia, że układy są bardziej dostosowalne do różnych rozmiarów stron. Aby uzyskać więcej opcji, zapoznaj się z dokumentacją dotyczącą znaków wodnych i stempli.

Przykład kompletnego generowania dokumentu

Ten obszerny przykład pokazuje konwersję dokumentuDynamicPDFzawierającego wiele elementów do formatu HTML przy użyciu biblioteki IronPDF.

Wdrożenie DynamicPDF:

using ceTe.DynamicPDF;
using ceTe.DynamicPDF.PageElements;
using ceTe.DynamicPDF.Merger;

// Generation (requires Generator license)
Document document = new Document();
Page page = new Page(PageSize.A4);
Label title = new Label("Invoice Report", 0, 0, 595, 30, Font.HelveticaBold, 18);
title.Align = TextAlign.Center;
page.Elements.Add(title);

Table2 table = new Table2(40, 60, 515, 500);
// ... complex table setup with columns, rows, cells...
page.Elements.Add(table);
document.Pages.Add(page);
document.Draw("invoice.pdf");

// Merging (requires Merger license)
MergeDocument mergeDoc = new MergeDocument("cover.pdf");
mergeDoc.Append("invoice.pdf");
mergeDoc.Draw("final.pdf");

Wdrożenie IronPDF:

using IronPdf;

var renderer = new ChromePdfRenderer();

// All features in one library
var html = @"
<html>
<head>
    <style>
        body { font-family: Helvetica, sans-serif; padding: 40px; }
        h1 { text-align: center; font-size: 18pt; }
        table { width: 100%; border-collapse: collapse; margin-top: 20px; }
        th, td { border: 1px solid #ccc; padding: 8px; }
    </style>
</head>
<body>
    <h1>Invoice Report</h1>
    <table>
        <tr><th>Product</th><th>Qty</th><th>Price</th></tr>
        <tr><td>Widget</td><td>10</td><td>$99.99</td></tr>
    </table>
</body>
</html>";

var invoice = renderer.RenderHtmlAsPdf(html);

// Merging included - no separate license
var cover = PdfDocument.FromFile("cover.pdf");
var final = PdfDocument.Merge(cover, invoice);
final.SaveAs("final.pdf");

Ważne uwagi dotyczące migracji

Pozycjonowanie oparte na współrzędnych do HTML/CSS

Fundamentalna zmiana paradygmatu wymaga przekształcenia pozycjonowania współrzędnych X,Y na układy oparte na CSS:

//DynamicPDF- coordinate-based
var label = new Label("Hello World", 100, 200, 300, 50);

//IronPDF- CSS positioning (if absolute positioning needed)
var html = "<div style='position:absolute; left:100px; top:200px; width:300px;'>Hello World</div>";

//IronPDF- preferred approach (flow-based)
var html = "<div style='margin-left:100px; margin-top:200px;'>Hello World</div>";

Składnia numeracji stron

DynamicPDF i IronPDF używają różnych składni symboli zastępczych dla numerów stron:

//DynamicPDFplaceholders
"Page %%CP%% of %%TP%%"

//IronPDF placeholders
"Page {page} of {total-pages}"
C#

Nagłówki i stopki

Konwertuj elementy TemplateDynamicPDFna HtmlHeaderFooter IronPDF:

//IronPDF header/footer
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
    HtmlFragment = "<div style='text-align:center;'>Page {page} of {total-pages}</div>",
    MaxHeight = 25
};

Aby uzyskać więcej opcji nagłówków i stopek, zapoznaj się z dokumentacją dotyczącą nagłówków i stopek.

Ustawienia zabezpieczeń

//IronPDF security
pdf.SecuritySettings.OwnerPassword = "ownerPassword";
pdf.SecuritySettings.UserPassword = "userPassword";

Aby uzyskać informacje na temat kompleksowych opcji bezpieczeństwa, zapoznaj się z dokumentacją dotyczącą szyfrowania.

Lista kontrolna po migracji

Po zakończeniu migracji kodu sprawdź, czy:

  • Wizualne porównanie wygenerowanych plików PDF
  • Sprawdź rozmieszczenie tekstu i układ
  • Sprawdź renderowanie tabeli i przepełnienie
  • Sprawdź nagłówki/stopki na wszystkich stronach
  • Testowanie funkcji wypełniania formularzy
  • Sprawdź zabezpieczenia/szyfrowanie
  • Testy porównawcze wydajności
  • Usuń nieużywane pliki licencji DynamicPDF
  • Aktualizacja dokumentacji

Dodatkowe zasoby


Migracja zDynamicPDFdo IronPDFłączy wiele licencji produktowych w jedną bibliotekę i zastępuje pozycjonowanie oparte na współrzędnych renderowaniem HTML/CSS na Chromium. Zespoły już zaznajomione z technologiami webowymi zazwyczaj uważają, że wynikowy kod jest łatwiejszy do utrzymania.

Zwróć uwagę: DynamicPDF jest zarejestrowanym znakiem towarowym swojego właściciela. Ta strona nie jest powiązana z, popierana ani sponsorowana przez ceTe Software. 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