IRONSOFTWAREHOME
FILMY

Jak przekonwertować HTML na PDF z responsywnym CSS przy użyciu C#

Curtis Chau
Curtis Chau
Updated: 18 maja 2026

ChociażComPDFKitoferuje solidne funkcje manipulacji plikami PDF, kilka czynników skłania zespoły programistów do rozważenia bardziej uznanych alternatyw.

Dojrzałość rynku i porównanie ekosystemów

ComPDFKit boryka się z wyzwaniami typowymi dla nowych graczy na rynku: brakami w dokumentacji, mniejszą społecznością i ograniczonym zasięgiem na Stack Overflow. Dziesięć lat udoskonaleńIronPDF zapewnia stabilność i zasoby wymagane w projektach Enterprise.

AspektComPDFKitIronPDF
HTML do PDFWymaga ręcznego parsowania HTMLNatwyna renderowanie Chromium
Dojrzałość rynkuNowszy uczestnikPonad 10 lat, wypróbowany w boju
Wielkość społecznościMniej liczna, ograniczona społeczność Stack OverflowDuża, aktywna społeczność
DokumentacjaNiektóre lukiObszerne samouczki i przewodniki
Pliki do pobraniaRosnącaPonad 10 milionów pobrań z NuGet
Styl APIWpływ C++, rozbudowaneNowoczesne .NET płynne API
Zarządzanie pamięciąReczne Release() wywolaniaAutomatyczne zarządzanie GC

Równowaga funkcji

Obie biblioteki obsługują kompleksową funkcjonalność PDF:

FunkcjaComPDFKitIronPDF
HTML do PDFPodstawowy/Ręczny✅ Natywne Chromium
URL do pliku PDFRęczna implementacja✅ Wbudowane
Utwórz plik PDF od podstaw
Edycja PDF
Wyodrębnianie tekstu
Scal/Podziel
Podpisy cyfrowe
Wypełnianie formularzy
Znaki wodne
WielopłatformoweWindows, Linux, macOSWindows, Linux, macOS

Kluczowe korzyści z migracji

  1. Doskonałe renderowanie HTML: silnik Chromium w IronPDF natywnie obsługuje nowoczesne CSS3, JavaScript i responsywne układy stron
  2. Dojrzały ekosystem: ponad 10 lat udoskonaleń, obszerna dokumentacja i sprawdzona stabilność
  3. Prostsze API: Mniej zbednego kodu, brak recznego zarzadzania pamiecia przy Release() wywolaniach
  4. Lepsza integracja z platformą .NET: natywne async/await, obsługa LINQ, płynne interfejsy
  5. Bogate zasoby: tysiące odpowiedzi na Stack Overflow i przykładów ze społeczności

Przygotowania przed migracją

Wymagania wstępne

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

  • .NET Framework 4.6.2+ lub .NET Core 3.1 / .NET 5-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 ComPDFKit

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

# Find allComPDFKitusages in your codebase
grep -r "using ComPDFKit" --include="*.cs" .
grep -r "CPDFDocument\|CPDFPage\|CPDFAnnotation" --include="*.cs" .

# Find NuGet package references
grep -r "ComPDFKit" --include="*.csproj" .
SHELL

Zmiany wymagające dostosowania

ZmianaComPDFKitIronPDFWpływ
Ładowanie dokumentówCPDFDocument.InitWithFilePath()PdfDocument.FromFile()Zmiana nazwy metody
Zapisywaniedocument.WriteToFilePath()pdf.SaveAs()Zmiana nazwy metody
Czyszczenie pamięcidocument.Release() wymaganeAutomatyczne (GC)Usuń ręczne czyszczenie
Dostęp do stronydocument.PageAtIndex(i)pdf.Pages[i]Dostęp w stylu tablicowym
Indeksowanie stronbazujący na 0bazujący na 0Nie ma potrzeby wprowadzania zmian
Renderowanie HTMLRęczna implementacjaRenderHtmlAsPdf()Znaczące uproszczenie
Wyodrębnianie tekstutextPage.GetText()pdf.ExtractAllText()Uproszczone API

Proces migracji krok po kroku

Krok 1: Zaktualizuj pakiety NuGet

Usuń pakietyComPDFKiti zainstaluj IronPDF:

# RemoveComPDFKitpackages
dotnet remove package ComPDFKit.NetCore
dotnet remove package ComPDFKit.NetFramework

# Install IronPDF
dotnet add package IronPdf
SHELL

Krok 2: Aktualizacja odniesień do przestrzeni nazw

Zastąp przestrzenie nazwComPDFKitprzez IronPDF:

// Remove these
using ComPDFKit.PDFDocument;
using ComPDFKit.PDFPage;
using ComPDFKit.PDFAnnotation;
using ComPDFKit.Import;

// Add this
using IronPdf;

Krok 3: Skonfiguruj licencję

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

Kompletna dokumentacja API

Operacje na dokumentach

ZadanieComPDFKitIronPDF
Utwórz pusty dokumentCPDFDocument.CreateDocument()new PdfDocument()
Wczytaj z plikuCPDFDocument.InitWithFilePath(path)PdfDocument.FromFile(path)
Wczytaj ze strumieniaCPDFDocument.InitWithStream(stream)PdfDocument.FromStream(stream)
Zapisz do plikudocument.WriteToFilePath(path)pdf.SaveAs(path)
Sprawdź liczbę strondocument.PageCountpdf.PageCount
Wydanie/Usunięciedocument.Release()Nie jest wymagane

Konwersja HTML do PDF

ZadanieComPDFKitIronPDF
Ciąg znaków HTML do pliku PDFWymagana ręczna implementacjarenderer.RenderHtmlAsPdf(html)
Plik HTML do PDFWymagana ręczna implementacjarenderer.RenderHtmlFileAsPdf(path)
URL do pliku PDFWymagana ręczna implementacjarenderer.RenderUrlAsPdf(url)
Ustaw rozmiar stronyZa pomocą parametrów tworzenia stronyrenderer.RenderingOptions.PaperSize
Ustaw marginesyPoprzez konfigurację edytorarenderer.RenderingOptions.MarginTop itp.

Operacje scałania i dzielenia

ZadanieComPDFKitIronPDF
Połącz dokumentydoc1.ImportPagesAtIndex(doc2, range, index)PdfDocument.Merge(pdf1, pdf2)
Podziel dokumentWyodrębnij strony do nowego dokumentupdf.CopyPages(start, end)

Przykłady migracji kodu

Konwersja HTML do PDF

Najważniejszą różnicą międzyComPDFKita IronPDF jest renderowanie HTML.Com/PDFKitwymaga ręcznego umieszczania tekstu, podczas gdy IronPDF renderuje HTML natywnie za pomocą silnika Chromium.

Wdrożenie ComPDFKit:

// NuGet: Install-Package ComPDFKit.NetCore
using ComPDFKit.PDFDocument;
using System;

class Program
{
    static void Main()
    {
        // ComPDFKit's .NET SDK has no native HTML-to-PDF rendering.
        // The closest equivalent is to create a blank document and lay
        // out primitives manually, or call ComPDFKit's separate cloud
        // Conversion API (a different SKU).
        var document = CPDFDocument.CreateDocument();
        document.InsertPage(0, 595, 842, string.Empty);

        document.WriteToFilePath("output.pdf");
        document.Release();
    }
}

Wdrożenie IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is HTML content.</p>");
        pdf.SaveAs("output.pdf");
    }
}

ChromePdfRendererIronPDF eliminuje potrzebe recznego pozycjonowania tekstu i zarzadzania edytorem. Aby uzyskać więcej opcji konwersji HTML, zapoznaj się z dokumentacją dotyczącą konwersji HTML do PDF.

Łączenie wielu plików PDF

Wdrożenie ComPDFKit:

// NuGet: Install-Package ComPDFKit.NetCore
using ComPDFKit.PDFDocument;
using ComPDFKit.Import;
using System;

class Program
{
    static void Main()
    {
        var document1 = CPDFDocument.InitWithFilePath("file1.pdf");
        var document2 = CPDFDocument.InitWithFilePath("file2.pdf");
        
        // Import pages from document2 into document1
        document1.ImportPagesAtIndex(document2, "0-" + (document2.PageCount - 1), document1.PageCount);
        
        document1.WriteToFilePath("merged.pdf");
        document1.Release();
        document2.Release();
    }
}

Wdrożenie IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var pdf1 = PdfDocument.FromFile("file1.pdf");
        var pdf2 = PdfDocument.FromFile("file2.pdf");
        
        var merged = PdfDocument.Merge(new List<PdfDocument> { pdf1, pdf2 });
        merged.SaveAs("merged.pdf");
    }
}

Statyczna metoda MergeIronPDF eliminuje rozbudowany wzorzec ImportPagesAtIndex z lancuchami zakresu stron. Aby uzyskać więcej opcji, zapoznaj się z dokumentacją dotyczącą scałania plików PDF.

Dodawanie znaków wodnych

Znak wodny pokazuje roznice miedzy konfiguracja zComPDFKitoparta na wlasciwosciach CPDFWatermark a stylizacja oparta na HTML w IronPDF.

Wdrożenie ComPDFKit:

// NuGet: Install-Package ComPDFKit.NetCore
using ComPDFKit.PDFDocument;
using ComPDFKit.PDFWatermark;
using System;

class Program
{
    static void Main()
    {
        var document = CPDFDocument.InitWithFilePath("input.pdf");

        CPDFWatermark watermark = document.InitWatermark(
            C_Watermark_Type.WATERMARK_TYPE_TEXT);
        watermark.SetText("CONFIDENTIAL");
        watermark.SetFontName("Helvetica");
        watermark.SetFontSize(48);
        watermark.SetTextRGBColor(255, 0, 0);
        watermark.SetRotation(45);
        watermark.SetOpacity(76); // 0..255
        watermark.SetVertalign(C_Watermark_Vertalign.WATERMARK_VERTALIGN_CENTER);
        watermark.SetHorizalign(C_Watermark_Horizalign.WATERMARK_HORIZALIGN_CENTER);
        watermark.SetPages($"0-{document.PageCount - 1}");
        watermark.SetFront(true);
        watermark.CreateWatermark();

        document.WriteToFilePath("watermarked.pdf");
        document.Release();
    }
}

Wdrożenie IronPDF:

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

class Program
{
    static void Main()
    {
        var pdf = PdfDocument.FromFile("input.pdf");
        
        pdf.ApplyWatermark("<h1 style='color:rgba(255,0,0,0.3);'>CONFIDENTIAL</h1>",
            rotation: 45,
            verticalAlignment: VerticalAlignment.Middle,
            horizontalAlignment: HorizontalAlignment.Center);
        
        pdf.SaveAs("watermarked.pdf");
    }
}

IronPDF redukuje wieloetapowa konfiguracje CPDFWatermark do pojedynczego wywolania metody ze stylizacja HTML/CSS. Aby uzyskać więcej opcji, zapoznaj się z dokumentacją dotyczącą znaków wodnych.

Wyodrębnianie tekstu

Wdrożenie ComPDFKit:

using ComPDFKit.PDFDocument;
using System.Text;

var document = CPDFDocument.InitWithFilePath("document.pdf");

// Extract text (verbose)
var allText = new StringBuilder();
for (int i = 0; i < document.PageCount; i++)
{
    var page = document.PageAtIndex(i);
    var textPage = page.GetTextPage();
    allText.AppendLine(textPage.GetText(0, textPage.CountChars()));
    textPage.Release();
    page.Release();
}

document.WriteToFilePath("output.pdf");
document.Release(); // Must remember to release!

Wdrożenie IronPDF:

using IronPdf;

var pdf = PdfDocument.FromFile("document.pdf");

// Extract text (one-liner)
string allText = pdf.ExtractAllText();

pdf.SaveAs("output.pdf");
// No Release() needed - GC handles cleanup

IronPDF redukuje wieloliniowe wyodrebnianie tekstu z recznymi Release() wywolaniami do jednej metody. Aby uzyskać więcej opcji ekstrakcji, zapoznaj się z dokumentacją dotyczącą ekstrakcji tekstu.

Ochrona hasłem

Wdrożenie IronPDF:

using IronPdf;

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Confidential Document</h1>");

// Set security
pdf.SecuritySettings.UserPassword = "userPassword";
pdf.SecuritySettings.OwnerPassword = "ownerPassword";
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;

pdf.SaveAs("protected.pdf");

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

Ważne uwagi dotyczące migracji

Usuń wszystkie wywołania Release()

Najbardziej znaczącą zmianą jest wyeliminowanie ręcznego zarządzania pamięcią.ComPDFKitwymaga jawnych Release() wywolan na dokumentach, stronach i stronach tekstowych.IronPDF obsługuje to automatycznie poprzez mechanizm czyszczenia pamięci .NET:

//ComPDFKit- manual cleanup required
document.Release();
page.Release();
textPage.Release();

//IronPDF- no equivalent needed
// GC handles cleanup automatically

Renderowanie natywnego HTML

ComPDFKit wymaga ręcznego umieszczania tekstu za pomocą interfejsów API edytora.IronPDF renderuje HTML/CSS natywnie za pomocą silnika Chromium, obsługując nowoczesny CSS3, JavaScript i responsywne układy.

Indeksowanie tej samej strony

Obie biblioteki uzywaja indeksowania od 0 (Pages[0] to pierwsza strona)—nie sa potrzebne zmiany w kodzie dostepu do stron.

Uproszczone wyodrębnianie tekstu

Zastap wieloliniowy wzorzec GetTextPage() + GetText() + Release() jednym wywolaniem ExtractAllText().

Płynne API łączenia

Zastap ImportPagesAtIndex(doc2, "0-9", pageCount) prostym Merge(pdf1, pdf2).

Lista kontrolna po migracji

Po zakończeniu migracji kodu sprawdź, czy:

  • Uruchom wszystkie testy jednostkowe, aby sprawdzić, czy generowanie plików PDF działa poprawnie
  • Porównaj jakość wydruku PDF (silnik Chromium w IronPDF może renderować inaczej — zazwyczaj lepiej)
  • Przetestuj renderowanie HTML z użyciem złożonych arkuszy CSS i kodu JavaScript
  • Sprawdź dokładność wyodrębniania tekstu
  • Testowanie funkcjonalności formularza
  • Testy wydajności operacji wsadowych
  • Przetestuj we wszystkich środowiskach docelowych
  • Aktualizacja potoków CI/CD
  • Usuń pliki licencji ComPDFKit

Dodatkowe zasoby


Migracja zComPDFKitdo IronPDF eliminuje reczne zarzadzanie pamiecia za pomoca Release() wywolan, a dodatkowo zapewnia natywne renderowanie HTML do PDF, ktorego brakuje w ComPDFKit. Przejście na dojrzały ekosystem IronPDF zapewnia szczegółową dokumentację, wsparcie społeczności oraz sprawdzoną stabilność, których wymagają projekty Enterprise.

Zwróć uwagę: ComPDFKit jest zastrzeżonym znakiem towarowym odpowiedniego właściciela. Ta strona nie jest powiązana z ComPDFKit, nie jest przez nią promowana ani sponsorowana. 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