Jak przeprowadzić migrację z ComPDFKit do IronPDF w języku C#
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.
| Aspekt | ComPDFKit | IronPDF |
|---|---|---|
| HTML do PDF | Wymaga ręcznego parsowania HTML | Natwyna renderowanie Chromium |
| Dojrzałość rynku | Nowszy uczestnik | Ponad 10 lat, wypróbowany w boju |
| Wielkość społeczności | Mniej liczna, ograniczona społeczność Stack Overflow | Duża, aktywna społeczność |
| Dokumentacja | Niektóre luki | Obszerne samouczki i przewodniki |
| Pliki do pobrania | Rosnąca | Ponad 10 milionów pobrań z NuGet |
| Styl API | Wpływ C++, rozbudowane | Nowoczesne .NET płynne API |
| Zarządzanie pamięcią | Reczne Release() wywolania |
Automatyczne zarządzanie GC |
Równowaga funkcji
Obie biblioteki obsługują kompleksową funkcjonalność PDF:
| Funkcja | ComPDFKit | IronPDF |
|---|---|---|
| HTML do PDF | Podstawowy/Ręczny | ✅ Natywne Chromium |
| URL do pliku PDF | Ręczna implementacja | ✅ Wbudowane |
| Utwórz plik PDF od podstaw | ✅ | ✅ |
| Edycja PDF | ✅ | ✅ |
| Wyodrębnianie tekstu | ✅ | ✅ |
| Scal/Podziel | ✅ | ✅ |
| Podpisy cyfrowe | ✅ | ✅ |
| Wypełnianie formularzy | ✅ | ✅ |
| Znaki wodne | ✅ | ✅ |
| Wielopłatformowe | Windows, Linux, macOS | Windows, Linux, macOS |
Kluczowe korzyści z migracji
- Doskonałe renderowanie HTML: silnik Chromium w IronPDF natywnie obsługuje nowoczesne CSS3, JavaScript i responsywne układy stron
- Dojrzały ekosystem: ponad 10 lat udoskonaleń, obszerna dokumentacja i sprawdzona stabilność
- Prostsze API: Mniej zbednego kodu, brak recznego zarzadzania pamiecia przy
Release()wywolaniach - Lepsza integracja z platformą .NET: natywne async/await, obsługa LINQ, płynne interfejsy
- 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" .
# 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" .
Zmiany wymagające dostosowania
| Zmiana | ComPDFKit | IronPDF | Wpływ |
|---|---|---|---|
| Ładowanie dokumentów | CPDFDocument.InitWithFilePath() |
PdfDocument.FromFile() |
Zmiana nazwy metody |
| Zapisywanie | document.WriteToFilePath() |
pdf.SaveAs() |
Zmiana nazwy metody |
| Czyszczenie pamięci | document.Release() wymagane |
Automatyczne (GC) | Usuń ręczne czyszczenie |
| Dostęp do strony | document.PageAtIndex(i) |
pdf.Pages[i] |
Dostęp w stylu tablicowym |
| Indeksowanie stron | bazujący na 0 | bazujący na 0 | Nie ma potrzeby wprowadzania zmian |
| Renderowanie HTML | Ręczna implementacja | RenderHtmlAsPdf() |
Znaczące uproszczenie |
| Wyodrębnianie tekstu | textPage.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
# RemoveComPDFKitpackages
dotnet remove package ComPDFKit.NetCore
dotnet remove package ComPDFKit.NetFramework
# Install IronPDF
dotnet add package IronPdf
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;
// Remove these
using ComPDFKit.PDFDocument;
using ComPDFKit.PDFPage;
using ComPDFKit.PDFAnnotation;
using ComPDFKit.Import;
// Add this
using IronPdf;
Imports IronPdf
Krok 3: Skonfiguruj licencję
// Add at application startup (Program.cs or Global.asax)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup (Program.cs or Global.asax)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
' Add at application startup (Program.vb or Global.asax)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Kompletna dokumentacja API
Operacje na dokumentach
| Zadanie | ComPDFKit | IronPDF |
|---|---|---|
| Utwórz pusty dokument | CPDFDocument.CreateDocument() |
new PdfDocument() |
| Wczytaj z pliku | CPDFDocument.InitWithFilePath(path) |
PdfDocument.FromFile(path) |
| Wczytaj ze strumienia | CPDFDocument.InitWithStream(stream) |
PdfDocument.FromStream(stream) |
| Zapisz do pliku | document.WriteToFilePath(path) |
pdf.SaveAs(path) |
| Sprawdź liczbę stron | document.PageCount |
pdf.PageCount |
| Wydanie/Usunięcie | document.Release() |
Nie jest wymagane |
Konwersja HTML do PDF
| Zadanie | ComPDFKit | IronPDF |
|---|---|---|
| Ciąg znaków HTML do pliku PDF | Wymagana ręczna implementacja | renderer.RenderHtmlAsPdf(html) |
| Plik HTML do PDF | Wymagana ręczna implementacja | renderer.RenderHtmlFileAsPdf(path) |
| URL do pliku PDF | Wymagana ręczna implementacja | renderer.RenderUrlAsPdf(url) |
| Ustaw rozmiar strony | Za pomocą parametrów tworzenia strony | renderer.RenderingOptions.PaperSize |
| Ustaw marginesy | Poprzez konfigurację edytora | renderer.RenderingOptions.MarginTop itp. |
Operacje scałania i dzielenia
| Zadanie | ComPDFKit | IronPDF |
|---|---|---|
| Połącz dokumenty | doc1.ImportPagesAtIndex(doc2, range, index) |
PdfDocument.Merge(pdf1, pdf2) |
| Podziel dokument | Wyodrębnij strony do nowego dokumentu | pdf.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();
}
}
// 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();
}
}
Imports ComPDFKit.PDFDocument
Imports System
Module Program
Sub 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).
Dim document = CPDFDocument.CreateDocument()
document.InsertPage(0, 595, 842, String.Empty)
document.WriteToFilePath("output.pdf")
document.Release()
End Sub
End Module
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");
}
}
// 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");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is HTML content.</p>")
pdf.SaveAs("output.pdf")
End Sub
End Class
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();
}
}
// 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();
}
}
Imports ComPDFKit.PDFDocument
Imports ComPDFKit.Import
Imports System
Module Program
Sub Main()
Dim document1 = CPDFDocument.InitWithFilePath("file1.pdf")
Dim 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()
End Sub
End Module
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");
}
}
// 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");
}
}
Imports IronPdf
Imports System
Imports System.Collections.Generic
Module Program
Sub Main()
Dim pdf1 = PdfDocument.FromFile("file1.pdf")
Dim pdf2 = PdfDocument.FromFile("file2.pdf")
Dim merged = PdfDocument.Merge(New List(Of PdfDocument) From {pdf1, pdf2})
merged.SaveAs("merged.pdf")
End Sub
End Module
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();
}
}
// 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();
}
}
Imports ComPDFKit.PDFDocument
Imports ComPDFKit.PDFWatermark
Imports System
Class Program
Shared Sub Main()
Dim document = CPDFDocument.InitWithFilePath("input.pdf")
Dim watermark As CPDFWatermark = 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()
End Sub
End Class
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");
}
}
// 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");
}
}
Imports IronPdf
Imports IronPdf.Editing
Imports System
Module Program
Sub Main()
Dim 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")
End Sub
End Module
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!
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!
Imports ComPDFKit.PDFDocument
Imports System.Text
Dim document = CPDFDocument.InitWithFilePath("document.pdf")
' Extract text (verbose)
Dim allText As New StringBuilder()
For i As Integer = 0 To document.PageCount - 1
Dim page = document.PageAtIndex(i)
Dim textPage = page.GetTextPage()
allText.AppendLine(textPage.GetText(0, textPage.CountChars()))
textPage.Release()
page.Release()
Next
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
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
Imports IronPdf
Dim pdf = PdfDocument.FromFile("document.pdf")
' Extract text (one-liner)
Dim allText As String = 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");
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");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
Dim 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
//ComPDFKit- manual cleanup required
document.Release();
page.Release();
textPage.Release();
//IronPDF- no equivalent needed
// GC handles cleanup automatically
'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
- Dokumentacja IronPDF
- Samouczki dotyczące konwersji HTML do PDF
- Dokumentacja API
- Pakiet NuGet
- Opcje licencyjne
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.

