Jak przeprowadzić migrację z ZetPDF do IronPDF w języku C#
ZetPDF to biblioteka PDF na licencji komercyjnej dla aplikacji C#, zbudowana w oparciu o powszechnie stosowaną bibliotekę open source PDFSharp. ChociażZetPDFzapewnia komercyjne wsparcie techniczne i podstawowe możliwości manipulacji plikami PDF, dziedziczy on znaczne ograniczenia wynikające z jego podstawy, jaką jest PDFSharp. Co najważniejsze, biblioteka opiera się na programowaniu graficznym opartym na współrzędnych i oferuje ograniczone możliwości konwersji HTML do PDF w porównaniu z nowoczesnymi alternatywami.
Niniejszy przewodnik zawiera kompletną ścieżkę migracji zZetPDFdoIronPDFwraz z instrukcjami krok po kroku, porównaniami kodu i praktycznymi przykładami dla profesjonalnych programistów .NET rozważających tę zmianę.
Dlaczego warto przejść z ZetPDF
ZetPDF, jako rozwidlenie PDFSharp, dziedziczy te same ograniczenia architektoniczne, które ograniczają jego skuteczność w nowoczesnych procesach tworzenia dokumentów. Główne powody, dla których zespoły programistów rozważają migrację, to:
API oparte na współrzędnych:ZetPDFwymaga od programistów pozycjonowania każdego elementu przy użyciu dokładnych współrzędnych. Skomplikowane ręczne pozycjonowanie każdego elementu stwarza wyzwania związane z utrzymaniem strony w miarę zmian wymagań.
Ograniczona obsługa CSS: Brak systemu stylów oznacza ręczne zarządzanie czcionkami i kolorami dla każdego elementu.
Brak renderowania JavaScript: Nie można renderować dynamicznej zawartości internetowej ani wykonywać kodu JavaScript podczas generowania pliku PDF.
Ograniczona oferta: W porównaniu z bezpłatnym korzystaniem z PDFSharp,ZetPDFoferuje niewiele przekonujących powodów, które uzasadniałyby zakup licencji komercyjnej.
Ręczne podziały stron: Należy ręcznie obliczać i zarządzać przepełnieniem stron, zamiast polegać na automatycznej paginacji.
Wymagana analiza tekstu: Ręczne obliczanie zawijania tekstu powoduje dodatkowe obciążenie związane z pracą programistów.
Podstawowy problem
ZetPDF i PDFSharp wymuszają pozycjonowanie każdego elementu przy użyciu dokładnych współrzędnych:
// ZetPDF: Podręcznik positioning nightmare
graphics.DrawString("Name:", font, brush, new XPoint(50, 100));
graphics.DrawString("John Doe", font, brush, new XPoint(100, 100));
graphics.DrawString("Address:", font, brush, new XPoint(50, 120));
graphics.DrawString("123 Main St", font, brush, new XPoint(100, 120));
// ... hundreds of lines for a simple form
// ZetPDF: Podręcznik positioning nightmare
graphics.DrawString("Name:", font, brush, new XPoint(50, 100));
graphics.DrawString("John Doe", font, brush, new XPoint(100, 100));
graphics.DrawString("Address:", font, brush, new XPoint(50, 120));
graphics.DrawString("123 Main St", font, brush, new XPoint(100, 120));
// ... hundreds of lines for a simple form
' ZetPDF: Podręcznik positioning nightmare
graphics.DrawString("Name:", font, brush, New XPoint(50, 100))
graphics.DrawString("John Doe", font, brush, New XPoint(100, 100))
graphics.DrawString("Address:", font, brush, New XPoint(50, 120))
graphics.DrawString("123 Main St", font, brush, New XPoint(100, 120))
' ... hundreds of lines for a simple form
IronPDF wykorzystujeHTML/CSS— silnik układu zajmuje się wszystkim:
// IronPDF: Simple HTML
var html = @"
<p><strong>Name:</strong> John Doe</p>
<p><strong>Address:</strong> 123 Main St</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
// IronPDF: Simple HTML
var html = @"
<p><strong>Name:</strong> John Doe</p>
<p><strong>Address:</strong> 123 Main St</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
' IronPDF: Simple HTML
Dim html As String = "
<p><strong>Name:</strong> John Doe</p>
<p><strong>Address:</strong> 123 Main St</p>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
IronPDFvs ZetPDF: Porównanie funkcji
Zrozumienie różnic architektonicznych pomaga decydentom technicznym w ocenie inwestycji w migrację:
| Funkcja | ZetPDF | IronPDF |
|---|---|---|
| Na podstawie PDFSharp | Tak | Nie |
| Konwersja HTML do PDF | Ograniczone | Tak (pełna wersja Chromium) |
| Licencja komercyjna | Tak, na czas nieokreślony | Tak |
| Fundacja Open Source | PDFSharp (licencja MIT) | Oparty na Chromium |
| Obsługa CSS | Nie | Pełny CSS3 |
| JavaScript | Nie | Pełna wersja ES2024 |
| Automatyczny układ | Nie | Tak |
| Automatyczne podziały stron | Nie | Tak |
| Tabele | Rysowanie ręczne | HTML <table> |
| Nagłówki/stopki | Podręcznik | HTML/CSS |
| Znaki wodne | Kod podręcznika | Wbudowane |
| Łączenie plików PDF | Ograniczone | Tak |
| Podział plików PDF | Ograniczone | Tak |
| Podpisy cyfrowe | Nie | Tak |
| PDF/A | Nie | Tak |
| Prostota i łatwość użytkowania | Umiarkowany | High |
Szybki start: Migracja zZetPDFdo IronPDF
Migrację można rozpocząć natychmiast, wykonując te podstawowe kroki.
Krok 1: Zastąp pakiet NuGet
Usuń ZetPDF:
# Remove ZetPDF
dotnet remove package ZetPDF
# Remove ZetPDF
dotnet remove package ZetPDF
Zainstaluj IronPDF:
# Install IronPDF
dotnet add package IronPdf
# Install IronPDF
dotnet add package IronPdf
Krok 2: Aktualizacja przestrzeni nazw
Zastąp przestrzenie nazwZetPDFprzestrzenią nazw IronPdf:
// Before (ZetPDF)
using ZetPdf;
using ZetPdf.Drawing;
using ZetPdf.Fonts;
// After (IronPDF)
using IronPdf;
// Before (ZetPDF)
using ZetPdf;
using ZetPdf.Drawing;
using ZetPdf.Fonts;
// After (IronPDF)
using IronPdf;
Imports IronPdf
Krok 3: Inicjalizacja licencji
Dodaj inicjalizację licencji podczas uruchamiania aplikacji:
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Przykłady migracji kodu
Konwersja HTML do PDF
Operacja konwersji HTML na PDF ilustruje różnice w API między tymi bibliotekami .NET do obsługi plików PDF.
Podejście ZetPDF:
// NuGet: Install-Package ZetPDF
using ZetPDF;
using System;
class Program
{
static void Main()
{
var converter = new HtmlToPdfConverter();
var htmlContent = "<html><body><h1>Hello World</h1></body></html>";
converter.ConvertHtmlToPdf(htmlContent, "output.pdf");
Console.WriteLine("PDF created successfully");
}
}
// NuGet: Install-Package ZetPDF
using ZetPDF;
using System;
class Program
{
static void Main()
{
var converter = new HtmlToPdfConverter();
var htmlContent = "<html><body><h1>Hello World</h1></body></html>";
converter.ConvertHtmlToPdf(htmlContent, "output.pdf");
Console.WriteLine("PDF created successfully");
}
}
Imports ZetPDF
Imports System
Module Program
Sub Main()
Dim converter As New HtmlToPdfConverter()
Dim htmlContent As String = "<html><body><h1>Hello World</h1></body></html>"
converter.ConvertHtmlToPdf(htmlContent, "output.pdf")
Console.WriteLine("PDF created successfully")
End Sub
End Module
Podejście IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var htmlContent = "<html><body><h1>Hello World</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var htmlContent = "<html><body><h1>Hello World</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim htmlContent = "<html><body><h1>Hello World</h1></body></html>"
Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
pdf.SaveAs("output.pdf")
Console.WriteLine("PDF created successfully")
End Sub
End Class
ZetPDF używa HtmlToPdfConverter z ConvertHtmlToPdf(), które zapisuje bezpośrednio do ścieżki pliku.IronPDFudostępnia ChromePdfRenderer z RenderHtmlAsPdf(), które zwracają obiekt PdfDocument, zapewniając większą elastyczność w zakresie wyników — można zapisać plik, pobrać dane binarne lub wykonać dodatkowe operacje przed zapisaniem.
W przypadku zaawansowanych scenariuszy konwersji HTML do PDF zapoznaj się z przewodnikiem po konwersji HTML do PDF.
Konwersja adresów URL do formatu PDF
Konwersja adresu URL do formatu PDF wyraźnie pokazuje różnice w strukturze.
Podejście ZetPDF:
// NuGet: Install-Package ZetPDF
using ZetPDF;
using System;
class Program
{
static void Main()
{
var converter = new HtmlToPdfConverter();
var url = "https://www.example.com";
converter.ConvertUrlToPdf(url, "webpage.pdf");
Console.WriteLine("PDF from URL created successfully");
}
}
// NuGet: Install-Package ZetPDF
using ZetPDF;
using System;
class Program
{
static void Main()
{
var converter = new HtmlToPdfConverter();
var url = "https://www.example.com";
converter.ConvertUrlToPdf(url, "webpage.pdf");
Console.WriteLine("PDF from URL created successfully");
}
}
Imports ZetPDF
Imports System
Module Program
Sub Main()
Dim converter As New HtmlToPdfConverter()
Dim url As String = "https://www.example.com"
converter.ConvertUrlToPdf(url, "webpage.pdf")
Console.WriteLine("PDF from URL created successfully")
End Sub
End Module
Podejście IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var url = "https://www.example.com";
var pdf = renderer.RenderUrlAsPdf(url);
pdf.SaveAs("webpage.pdf");
Console.WriteLine("PDF from URL created successfully");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var url = "https://www.example.com";
var pdf = renderer.RenderUrlAsPdf(url);
pdf.SaveAs("webpage.pdf");
Console.WriteLine("PDF from URL created successfully");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim url = "https://www.example.com"
Dim pdf = renderer.RenderUrlAsPdf(url)
pdf.SaveAs("webpage.pdf")
Console.WriteLine("PDF from URL created successfully")
End Sub
End Class
ZetPDF używa tej samej klasy HtmlToPdfConverter co ConvertUrlToPdf().IronPDFzapewnia RenderUrlAsPdf() na ChromePdfRenderer, co wykorzystuje pełny silnik renderujący Chromium do dokładnego przechwytywania stron internetowych, w tym wykonywania kodu JavaScript i nowoczesnego CSS.
Zapoznaj się z dokumentacją dotyczącą konwersji adresów URL do formatu PDF, aby uzyskać informacje na temat uwierzytelniania i opcji niestandardowych nagłówków.
Łączenie wielu plików PDF
Porównanie plików PDF ujawnia istotne różnice w API dotyczące sposobu obsługi dokumentów.
Podejście ZetPDF:
// NuGet: Install-Package ZetPDF
using ZetPDF;
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var merger = new PdfMerger();
var files = new List<string> { "document1.pdf", "document2.pdf" };
merger.MergeFiles(files, "merged.pdf");
Console.WriteLine("PDFs merged successfully");
}
}
// NuGet: Install-Package ZetPDF
using ZetPDF;
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var merger = new PdfMerger();
var files = new List<string> { "document1.pdf", "document2.pdf" };
merger.MergeFiles(files, "merged.pdf");
Console.WriteLine("PDFs merged successfully");
}
}
Imports ZetPDF
Imports System
Imports System.Collections.Generic
Module Program
Sub Main()
Dim merger As New PdfMerger()
Dim files As New List(Of String) From {"document1.pdf", "document2.pdf"}
merger.MergeFiles(files, "merged.pdf")
Console.WriteLine("PDFs merged successfully")
End Sub
End Module
Podejście IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var pdfs = new List<PdfDocument>
{
PdfDocument.FromFile("document1.pdf"),
PdfDocument.FromFile("document2.pdf")
};
var merged = PdfDocument.Merge(pdfs);
merged.SaveAs("merged.pdf");
Console.WriteLine("PDFs merged successfully");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var pdfs = new List<PdfDocument>
{
PdfDocument.FromFile("document1.pdf"),
PdfDocument.FromFile("document2.pdf")
};
var merged = PdfDocument.Merge(pdfs);
merged.SaveAs("merged.pdf");
Console.WriteLine("PDFs merged successfully");
}
}
Imports IronPdf
Imports System
Imports System.Collections.Generic
Module Program
Sub Main()
Dim pdfs As New List(Of PdfDocument) From {
PdfDocument.FromFile("document1.pdf"),
PdfDocument.FromFile("document2.pdf")
}
Dim merged = PdfDocument.Merge(pdfs)
merged.SaveAs("merged.pdf")
Console.WriteLine("PDFs merged successfully")
End Sub
End Module
ZetPDF wykorzystuje dedykowaną klasę PdfMerger, która obsługuje ścieżki plików za pomocą MergeFiles().IronPDFładuje dokumenty jako obiekty PdfDocument przy użyciu PdfDocument.FromFile(), a następnie łączy je za pomocą statycznej metody PdfDocument.Merge(). To podejście obiektowe umożliwia wykonywanie dodatkowych operacji na scalonym dokumencie przed zapisaniem.
Zapoznaj się z dokumentacją dotyczącą łączenia plików PDF, aby poznać dodatkowe opcje łączenia.
Rysowanie oparte na współrzędnych a HTML
W przypadku programistów korzystających z istniejącego koduZetPDFwykorzystującego grafikę opartą na współrzędnych ścieżka migracji obejmuje konwersję poleceń rysowania do formatu HTML/CSS.
Podejście oparte na współrzędnych ZetPDF:
using ZetPdf;
using ZetPdf.Drawing;
var document = new PdfDocument();
var page = document.AddPage();
page.Width = XUnit.FromMillimeter(210);
page.Height = XUnit.FromMillimeter(297);
var graphics = XGraphics.FromPdfPage(page);
var titleFont = new XFont("Arial", 24, XFontStyle.Bold);
var bodyFont = new XFont("Arial", 12);
graphics.DrawString("Company Report", titleFont, XBrushes.Navy,
new XPoint(50, 50));
graphics.DrawString("This is the introduction paragraph.", bodyFont, XBrushes.Black,
new XPoint(50, 80));
graphics.DrawString("Generated: " + DateTime.Now.ToString(), bodyFont, XBrushes.Gray,
new XPoint(50, 100));
document.Save("report.pdf");
using ZetPdf;
using ZetPdf.Drawing;
var document = new PdfDocument();
var page = document.AddPage();
page.Width = XUnit.FromMillimeter(210);
page.Height = XUnit.FromMillimeter(297);
var graphics = XGraphics.FromPdfPage(page);
var titleFont = new XFont("Arial", 24, XFontStyle.Bold);
var bodyFont = new XFont("Arial", 12);
graphics.DrawString("Company Report", titleFont, XBrushes.Navy,
new XPoint(50, 50));
graphics.DrawString("This is the introduction paragraph.", bodyFont, XBrushes.Black,
new XPoint(50, 80));
graphics.DrawString("Generated: " + DateTime.Now.ToString(), bodyFont, XBrushes.Gray,
new XPoint(50, 100));
document.Save("report.pdf");
Imports ZetPdf
Imports ZetPdf.Drawing
Dim document As New PdfDocument()
Dim page = document.AddPage()
page.Width = XUnit.FromMillimeter(210)
page.Height = XUnit.FromMillimeter(297)
Dim graphics = XGraphics.FromPdfPage(page)
Dim titleFont As New XFont("Arial", 24, XFontStyle.Bold)
Dim bodyFont As New XFont("Arial", 12)
graphics.DrawString("Company Report", titleFont, XBrushes.Navy, New XPoint(50, 50))
graphics.DrawString("This is the introduction paragraph.", bodyFont, XBrushes.Black, New XPoint(50, 80))
graphics.DrawString("Generated: " & DateTime.Now.ToString(), bodyFont, XBrushes.Gray, New XPoint(50, 100))
document.Save("report.pdf")
PodejścieIronPDFHTML:
using IronPdf;
var html = $@"
<html>
<head>
<style>
body {{ font-family: Arial, sans-serif; padding: 50px; }}
h1 {{ color: navy; }}
.date {{ color: gray; }}
</style>
</head>
<body>
<h1>Company Report</h1>
<p>This is the introduction paragraph.</p>
<p class='date'>Generated: {DateTime.Now}</p>
</body>
</html>";
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("report.pdf");
using IronPdf;
var html = $@"
<html>
<head>
<style>
body {{ font-family: Arial, sans-serif; padding: 50px; }}
h1 {{ color: navy; }}
.date {{ color: gray; }}
</style>
</head>
<body>
<h1>Company Report</h1>
<p>This is the introduction paragraph.</p>
<p class='date'>Generated: {DateTime.Now}</p>
</body>
</html>";
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("report.pdf");
Imports IronPdf
Dim html As String = $"
<html>
<head>
<style>
body {{ font-family: Arial, sans-serif; padding: 50px; }}
h1 {{ color: navy; }}
.date {{ color: gray; }}
</style>
</head>
<body>
<h1>Company Report</h1>
<p>This is the introduction paragraph.</p>
<p class='date'>Generated: {DateTime.Now}</p>
</body>
</html>"
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("report.pdf")
PodejścieZetPDFwymaga tworzenia obiektów czcionek, obliczania dokładnych pozycji pikseli oraz ręcznego zarządzania kontekstem graficznym. PodejścieIronPDFwykorzystuje standardowy HTML i CSS, które są już znane programistom stron internetowych — czcionki, kolory i układ są obsługiwane za pomocą znanych właściwości CSS.
Dokumentacja APIZetPDFdo IronPDF
To mapowanie przyspiesza migrację, pokazując bezpośrednie odpowiedniki API:
| ZetPDF | IronPDF |
|---|---|
new PdfDocument() |
new ChromePdfRenderer() |
document.AddPage() |
Automatyczne |
XGraphics.FromPdfPage(page) |
Nie dotyczy |
graphics.DrawString() |
Elementy tekstowe HTML |
graphics.DrawImage() |
<img> tag |
graphics.DrawLine() |
Obramowania CSS |
graphics.DrawRectangle() |
CSS border + div |
new XFont() |
CSS font-family |
XBrushes.Black |
CSS color |
document.Save() |
pdf.SaveAs() |
PdfReader.Open() |
PdfDocument.FromFile() |
HtmlToPdfConverter |
ChromePdfRenderer |
ConvertHtmlToPdf() |
RenderHtmlAsPdf() |
ConvertUrlToPdf() |
RenderUrlAsPdf() |
PdfMerger |
PdfDocument.Merge() |
Typowe problemy związane z migracją i ich rozwiązania
Problem 1: Układ oparty na współrzędnych
ZetPDF: Wszystko wymaga dokładnych współrzędnych X,Y z ręcznym pozycjonowaniem.
Rozwiązanie: Zastosuj układ płynny HTML/CSS. W razie potrzeby do pozycjonowania absolutnego użyj CSS:
.positioned-element {
position: absolute;
top: 100px;
left: 50px;
}
Problem 2: Zarządzanie obiektami czcionek
ZetPDF: Utwórz obiekty XFont dla każdej odmiany czcionki.
Rozwiązanie: Użyj właściwości CSS font-family — czcionki są obsługiwane automatycznie:
<style>
body { font-family: Arial, sans-serif; }
h1 { font-family: 'Times New Roman', serif; font-size: 24px; font-weight: bold; }
</style>
<style>
body { font-family: Arial, sans-serif; }
h1 { font-family: 'Times New Roman', serif; font-size: 24px; font-weight: bold; }
</style>
Problem 3: Obsługa kolorów
ZetPDF: Użyj XBrushes i obiektów kolorów.
Rozwiązanie: Użyj standardowych kolorów CSS:
.header { color: navy; background-color: #f5f5f5; }
.warning { color: rgb(255, 0, 0); }
Problem 4: Ręczne podziały stron
ZetPDF: Śledź pozycję Y i ręcznie twórz nowe strony, gdy zawartość się przepełnia.
Rozwiązanie:IronPDFobsługuje automatyczne podziały stron. Aby uzyskać precyzyjną kontrolę, użyj CSS:
.section { page-break-after: always; }
.keep-together { page-break-inside: avoid; }
Problem 5: Tworzenie tabel
ZetPDF: Wymaga ręcznego rysowania prostokątów, linii i pozycjonowania tekstu.
Rozwiązanie: Użyj standardowych tabel HTML ze stylizacją CSS:
<table style="border-collapse: collapse; width: 100%;">
<tr>
<th style="border: 1px solid black; padding: 8px;">Header</th>
</tr>
<tr>
<td style="border: 1px solid black; padding: 8px;">Data</td>
</tr>
</table>
<table style="border-collapse: collapse; width: 100%;">
<tr>
<th style="border: 1px solid black; padding: 8px;">Header</th>
</tr>
<tr>
<td style="border: 1px solid black; padding: 8px;">Data</td>
</tr>
</table>
Lista kontrolna migracji ZetPDF
Zadania przed migracją
Przeprowadź audyt kodu źródłowego, aby zidentyfikować wszystkie przypadki użycia ZetPDF:
grep -r "using ZetPDF" --include="*.cs" .
grep -r "HtmlToPdfConverter\|PdfMerger\|XGraphics" --include="*.cs" .
grep -r "using ZetPDF" --include="*.cs" .
grep -r "HtmlToPdfConverter\|PdfMerger\|XGraphics" --include="*.cs" .
Dokument zawierający kod rysowania oparty na współrzędnych, który wymaga konwersji do formatu HTML. Zwróć uwagę na wzorce użycia czcionek i kolorów. Należy odwzorować struktury układu na odpowiedniki w HTML.
Zadania związane z aktualizacją kodu
- Usuń pakietZetPDFNuGet
- Zainstaluj pakiet IronPdf NuGet
- Zaktualizuj importy przestrzeni nazw z
ZetPDFnaIronPdf - Zastąp
HtmlToPdfConverterprzezChromePdfRenderer - Zamień wywołania
ConvertHtmlToPdf()naRenderHtmlAsPdf()+SaveAs() - Zamień wywołania
ConvertUrlToPdf()naRenderUrlAsPdf()+SaveAs() - Zastąp
PdfMerger.MergeFiles()przezPdfDocument.Merge() - Zamień wywołania
DrawString()na elementy tekstowe HTML - Przekonwertuj
XFontna CSSfont-family - Zastąp
XBrusheskolorami CSS - Dodaj inicjalizację licencjiIronPDFpodczas uruchamiania
Testy po migracji
Po migracji należy zweryfikować następujące aspekty:
- Porównaj wygląd końcowy, aby upewnić się, że jest on zgodny z oryginałem lub lepszy
- Sprawdź, czy czcionki wyświetlają się zgodnie z oczekiwaniami przy zastosowaniu stylów CSS
- Sprawdź, czy podziały stron działają poprawnie przy automatycznej paginacji
- Sprawdź, czy obrazy są prawidłowo rozmieszczone i wyświetlane
- Testowe operacje łączenia plików PDF dają poprawny wynik
- Sprawdź, czy wszystkie istniejące funkcje działają z nową implementacją
Kluczowe korzyści z migracji do IronPDF
Przejście zZetPDFnaIronPDFzapewnia kilka kluczowych korzyści:
Nowoczesny silnik renderujący Chromium:IronPDFwykorzystuje Chromium do konwersji HTML na PDF, zapewniając pełną obsługę CSS3 i JavaScript ES2024. Nowoczesne frameworki i responsywne projekty wyświetlają się poprawnie.
Tworzenie treści opartych na HTML: Programiści stron internetowych mogą wykorzystać swoje dotychczasowe umiejętności w zakresie HTML i CSS. Nie ma potrzeby uczenia się interfejsów API rysowania opartych na współrzędnych ani zarządzania obiektami czcionek.
Automatyczny układ i paginacja: zawijanie tekstu, podziały stron i układ przepływu odbywają się automatycznie. Nie należy ręcznie obliczać pozycji elementów.
Uproszczone API: Wywołania pojedynczych metod dla typowych operacji. PdfDocument.Merge() zastępuje złożone wzorce obsługi ścieżek plików.
Aktywny rozwój: W miarę jak do 2026 r. wzrośnie popularność .NET 10 i C# 14, regularne aktualizacjeIronPDFzapewnią zgodność z obecnymi i przyszłymi wersjami .NET.
Kompleksowy zestaw funkcji: wbudowane znakowanie wodne, podpisy cyfrowe, zgodność z PDF/A oraz zaawansowane funkcje edycji plików PDF, których brakuje w ZetPDF.

