Jak przeprowadzić migrację z ExpertPdf do IronPDF w języku C#
ExpertPdf to komercyjny konwerter HTML na PDF dla platformy .NET, który od wielu lat służy programistom. Jednak ExpertPdf stoi przed poważnymi wyzwaniami w dzisiejszym szybko zmieniającym się świecie programowania: dokumentacja zamrożona od 2018 roku, zależność od starszej wersji Chrome, która nie obsługuje nowoczesnych funkcji CSS3, wysokie ceny wynoszące od 550 do 1200 dolarów za przestarzałą technologię oraz rozdrobniona Suite produktów wymagająca oddzielnych licencji na scalanie, zabezpieczenia i dzielenie. Ten kompleksowy przewodnik przedstawia krok po kroku ścieżkę migracji z ExpertPdf doIronPDF— nowoczesnej biblioteki PDF dla platformy .NET z najnowszym silnikiem renderującym Chromium, comiesięcznymi aktualizacjami i architekturą typu "wszystko w jednym".
Dlaczego warto przejść z ExpertPdf na IronPDF?
ExpertPdf stwarza kilka wyzwań, które skłaniają zespoły programistów do rozważenia nowoczesnych alternatyw. Zrozumienie tych kwestii jest niezbędne do zaplanowania strategii migracji.
Problemy z ExpertPdf
-
Dokumentacja nieaktualna od 2018 r.: Dokumentacja ExpertPdf nie była aktualizowana od ponad 6 lat. W miarę ewolucji ekosystemu .NET coraz trudniej jest znaleźć aktualne informacje, przykłady i najlepsze praktyki.
-
Przestarzała wersja przeglądarki Chrome: ExpertPdf wykorzystuje do renderowania starszą wersję przeglądarki Chrome. Nowoczesne funkcje CSS3 (Flexbox, Grid, zmienne CSS) mogą nie wyświetlać się poprawnie, a poprawki bezpieczeństwa nie są stosowane.
-
Wysokie ceny za przestarzałą technologię: Przy cenie od 550 do 1200 dolarów za licencję, ExpertPdf stosuje wysokie ceny, oferując jednocześnie przestarzałą technologię renderowania.
-
Fragmentaryczna Suite produktów: ExpertPdf sprzedaje oddzielne pakiety dla różnych funkcji — HtmlToPdf Converter, PDF Merger, PDF Security, PDF Splitter oraz PDF to Image — z których każdy wymaga oddzielnej licencji.
- Ograniczona obsługa nowoczesnego .NET: Chociaż ExpertPdf posiada pakiety .NET Core, pozostają one w tyle za nowoczesnymi wersjami i praktykami .NET.
Porównanie architektur
| Aspekt | ExpertPdf | IronPDF |
|---|---|---|
| Dokumentacja | Wstrzymane od 2018 r. | Stale aktualizowane |
| Silnik renderujący | Starsza wersja Chrome | Najnowsza wersja Chromium |
| Obsługa CSS | Ograniczone CSS3 | Pełna obsługa CSS3 (Flexbox, Grid) |
| Cena | 550–1200 USD | Konkurencyjne ceny |
| Częstotliwość aktualizacji | Rzadko | Comiesięczne wydania |
| Model produktu | Fragmentaryczne (5+ bibliotek DLL) | Biblioteka typu "wszystko w jednym" |
| Nowoczesny .NET | Ograniczone | .NET 6/7/8/9+ natywne |
| Obsługa asynchroniczna | Ograniczone | Pełna obsługa async/await |
Kluczowe korzyści z migracji
- Nowoczesne renderowanie: najnowszy silnik Chromium zapewniający idealną jakość obrazu
- Pakiet "wszystko w jednym": generowanie plików PDF, scalanie, zabezpieczenia, wyodrębnianie w jednym pakiecie NuGet
- Aktywny rozwój: comiesięczne aktualizacje zawierające nowe funkcje i poprawki bezpieczeństwa
- Lepsza dokumentacja: kompleksowe samouczki i przykłady
- Prawdziwa wieloplatformowość: obsługa systemów Windows, Linux, macOS oraz Docker
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 licencyjnyIronPDF(bezpłatna wersja próbna dostępna na stronie ironpdf.com)
Audyt wykorzystania ExpertPdf
Uruchom te polecenia w katalogu rozwiązania, aby zidentyfikować wszystkie odwołania do ExpertPdf:
# Find all ExpertPdf references
grep -r "ExpertPdf\|PdfConverter\|PDFMerge\|PdfSecurityManager" --include="*.cs" .
# Check NuGet packages
dotnet list package | grep -i "ExpertPdf"
# Find all ExpertPdf references
grep -r "ExpertPdf\|PdfConverter\|PDFMerge\|PdfSecurityManager" --include="*.cs" .
# Check NuGet packages
dotnet list package | grep -i "ExpertPdf"
Typowe pakiety ExpertPdf, na które warto zwrócić uwagę:
ExpertPdf.HtmlToPdf- Konwersja HTML do PDFExpertPdf.PDFMerge- Łączenie plików PDFExpertPdf.PDFSecurity- Szyfrowanie i hasłaExpertPdf.PDFSplit- Dzielenie plików PDFExpertPdf.PdfToImage- Konwersja plików PDF na obrazy
Zrozumienie zmiany wzorca podstawowego
ExpertPdf używa PdfConverter z metodami zwracającymi bezpośrednią tablicę bajtów.IronPDFużywa ChromePdfRenderer zwracając obiekty PdfDocument, które zapewniają dodatkowe możliwości manipulacji przed zapisaniem.
Proces migracji krok po kroku
Krok 1: Zaktualizuj pakiety NuGet
Usuń wszystkie pakiety ExpertPdf i zainstaluj IronPDF:
# Remove all ExpertPdf packages
dotnet remove package ExpertPdf.HtmlToPdf
dotnet remove package ExpertPdf.PDFMerge
dotnet remove package ExpertPdf.PDFSecurity
dotnet remove package ExpertPdf.PDFSplit
dotnet remove package ExpertPdf.PdfToImage
# InstallIronPDF(includes all features)
dotnet add package IronPdf
# Remove all ExpertPdf packages
dotnet remove package ExpertPdf.HtmlToPdf
dotnet remove package ExpertPdf.PDFMerge
dotnet remove package ExpertPdf.PDFSecurity
dotnet remove package ExpertPdf.PDFSplit
dotnet remove package ExpertPdf.PdfToImage
# InstallIronPDF(includes all features)
dotnet add package IronPdf
Krok 2: Aktualizacja odniesień do przestrzeni nazw
Zastąp przestrzenie nazw ExpertPdf na IronPDF:
// Remove these
using ExpertPdf.HtmlToPdf;
// Add this
using IronPdf;
// Remove these
using ExpertPdf.HtmlToPdf;
// Add this
using IronPdf;
Imports IronPdf
Krok 3: Skonfiguruj licencję
ExpertPdf stosuje licencjonowanie na konwerter.IronPDFkorzysta z jednej globalnej licencji:
// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
' Add at application startup (Program.vb or Startup.vb)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Kompletna dokumentacja API
Mapowanie klas podstawowych
| Klasa ExpertPdf | OdpowiednikIronPDF |
|---|---|
PdfConverter |
ChromePdfRenderer |
PdfDocumentOptions |
ChromePdfRenderOptions |
PdfHeaderOptions |
TextHeaderFooter lub HtmlHeaderFooter |
PdfFooterOptions |
TextHeaderFooter lub HtmlHeaderFooter |
PDFMerge |
PdfDocument.Merge() |
Mapowanie metod
| Metoda ExpertPdf | MetodaIronPDF |
|---|---|
pdfConverter.GetPdfBytesFromHtmlString(html) |
renderer.RenderHtmlAsPdf(html).BinaryData |
pdfConverter.GetPdfBytesFromUrl(url) |
renderer.RenderUrlAsPdf(url).BinaryData |
pdfConverter.GetPdfBytesFromHtmlFile(path) |
renderer.RenderHtmlFileAsPdf(path).BinaryData |
pdfConverter.SavePdfFromUrlToFile(url, path) |
renderer.RenderUrlAsPdf(url).SaveAs(path) |
Mapowanie opcji
| Opcja ExpertPdf | IronPDF RenderingOptions |
|---|---|
PdfDocumentOptions.PdfPageSize = PdfPageSize.A4 |
PaperSize = PdfPaperSize.A4 |
PdfDocumentOptions.PdfPageOrientation = Portrait |
PaperOrientation = PdfPaperOrientation.Portrait |
PdfDocumentOptions.MarginTop |
MarginTop |
PdfHeaderOptions.HeaderText |
TextHeader.CenterText |
PdfFooterOptions.FooterText |
TextFooter.RightText |
Konwersja tokenów numeracji stron
ExpertPdf iIronPDFużywają różnych składni symboli zastępczych dla numerów stron:
| ExpertPdf | IronPDF |
|---|---|
&p; |
{page} |
&P; |
{total-pages} |
Przykłady migracji kodu
Konwersja HTML do PDF
Podstawowa konwersja z HTML do PDF ilustruje przejście od modelu tablicy bajtów stosowanego w IronPdf do podejścia opartego na obiektach dokumentów stosowanego w IronPDF.
Wdrożenie ExpertPdf:
// NuGet: Install-Package ExpertPdf.HtmlToPdf
using ExpertPdf.HtmlToPdf;
using System;
class Program
{
static void Main()
{
// Create the PDF converter
PdfConverter pdfConverter = new PdfConverter();
// Convert HTML string to PDF
byte[] pdfBytes = pdfConverter.GetPdfBytesFromHtmlString("<h1>Hello World</h1><p>This is a PDF document.</p>");
// Save to file
System.IO.File.WriteAllBytes("output.pdf", pdfBytes);
Console.WriteLine("PDF created successfully!");
}
}
// NuGet: Install-Package ExpertPdf.HtmlToPdf
using ExpertPdf.HtmlToPdf;
using System;
class Program
{
static void Main()
{
// Create the PDF converter
PdfConverter pdfConverter = new PdfConverter();
// Convert HTML string to PDF
byte[] pdfBytes = pdfConverter.GetPdfBytesFromHtmlString("<h1>Hello World</h1><p>This is a PDF document.</p>");
// Save to file
System.IO.File.WriteAllBytes("output.pdf", pdfBytes);
Console.WriteLine("PDF created successfully!");
}
}
Imports ExpertPdf.HtmlToPdf
Imports System
Module Program
Sub Main()
' Create the PDF converter
Dim pdfConverter As New PdfConverter()
' Convert HTML string to PDF
Dim pdfBytes As Byte() = pdfConverter.GetPdfBytesFromHtmlString("<h1>Hello World</h1><p>This is a PDF document.</p>")
' Save to file
System.IO.File.WriteAllBytes("output.pdf", pdfBytes)
Console.WriteLine("PDF created successfully!")
End Sub
End Module
Wdrożenie IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
// Create a PDF from HTML string
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF document.</p>");
// Save to file
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully!");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
// Create a PDF from HTML string
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF document.</p>");
// Save to file
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully!");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
' Create a PDF from HTML string
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF document.</p>")
' Save to file
pdf.SaveAs("output.pdf")
Console.WriteLine("PDF created successfully!")
End Sub
End Class
PodejścieIronPDFzwraca obiekt PdfDocument, umożliwiający dodatkową obróbkę (łączenie, dodawanie znaków wodnych, zabezpieczenia) przed zapisaniem. Aby uzyskać więcej opcji, zapoznaj się z dokumentacją dotyczącą konwersji HTML do PDF.
URL do pliku PDF z ustawieniami strony
Wdrożenie ExpertPdf:
// NuGet: Install-Package ExpertPdf.HtmlToPdf
using ExpertPdf.HtmlToPdf;
using System;
class Program
{
static void Main()
{
// Create the PDF converter
PdfConverter pdfConverter = new PdfConverter();
// Set page size and orientation
pdfConverter.PdfDocumentOptions.PdfPageSize = PdfPageSize.A4;
pdfConverter.PdfDocumentOptions.PdfPageOrientation = PdfPageOrientation.Portrait;
// Convert URL to PDF
byte[] pdfBytes = pdfConverter.GetPdfBytesFromUrl("https://www.example.com");
// Save to file
System.IO.File.WriteAllBytes("webpage.pdf", pdfBytes);
Console.WriteLine("PDF from URL created successfully!");
}
}
// NuGet: Install-Package ExpertPdf.HtmlToPdf
using ExpertPdf.HtmlToPdf;
using System;
class Program
{
static void Main()
{
// Create the PDF converter
PdfConverter pdfConverter = new PdfConverter();
// Set page size and orientation
pdfConverter.PdfDocumentOptions.PdfPageSize = PdfPageSize.A4;
pdfConverter.PdfDocumentOptions.PdfPageOrientation = PdfPageOrientation.Portrait;
// Convert URL to PDF
byte[] pdfBytes = pdfConverter.GetPdfBytesFromUrl("https://www.example.com");
// Save to file
System.IO.File.WriteAllBytes("webpage.pdf", pdfBytes);
Console.WriteLine("PDF from URL created successfully!");
}
}
Imports ExpertPdf.HtmlToPdf
Imports System
Module Program
Sub Main()
' Create the PDF converter
Dim pdfConverter As New PdfConverter()
' Set page size and orientation
pdfConverter.PdfDocumentOptions.PdfPageSize = PdfPageSize.A4
pdfConverter.PdfDocumentOptions.PdfPageOrientation = PdfPageOrientation.Portrait
' Convert URL to PDF
Dim pdfBytes As Byte() = pdfConverter.GetPdfBytesFromUrl("https://www.example.com")
' Save to file
System.IO.File.WriteAllBytes("webpage.pdf", pdfBytes)
Console.WriteLine("PDF from URL created successfully!")
End Sub
End Module
Wdrożenie IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
// Create a PDF renderer
var renderer = new ChromePdfRenderer();
// Set page size and orientation
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait;
// Convert URL to PDF
var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
// Save to file
pdf.SaveAs("webpage.pdf");
Console.WriteLine("PDF from URL created successfully!");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
// Create a PDF renderer
var renderer = new ChromePdfRenderer();
// Set page size and orientation
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait;
// Convert URL to PDF
var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
// Save to file
pdf.SaveAs("webpage.pdf");
Console.WriteLine("PDF from URL created successfully!");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
' Create a PDF renderer
Dim renderer = New ChromePdfRenderer()
' Set page size and orientation
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait
' Convert URL to PDF
Dim pdf = renderer.RenderUrlAsPdf("https://www.example.com")
' Save to file
pdf.SaveAs("webpage.pdf")
Console.WriteLine("PDF from URL created successfully!")
End Sub
End Class
RenderingOptions firmyIronPDFzapewnia bezpośredni dostęp do właściwości służących do konfiguracji strony. Aby uzyskać więcej opcji, zapoznaj się z dokumentacją dotyczącą konwersji URL na PDF.
Nagłówki i stopki z numerami stron
Ten przykład ilustruje kluczową różnicę w konfiguracji nagłówków/stopek — ExpertPdf używa oddzielnych klas PdfHeaderOptions i PdfFooterOptions z tokenami &P;, podczas gdyIronPDFużywa TextHeaderFooter z symbolami zastępczymi {total-pages}.
Wdrożenie ExpertPdf:
// NuGet: Install-Package ExpertPdf.HtmlToPdf
using ExpertPdf.HtmlToPdf;
using System;
class Program
{
static void Main()
{
// Create the PDF converter
PdfConverter pdfConverter = new PdfConverter();
// Enable header
pdfConverter.PdfHeaderOptions.ShowHeader = true;
pdfConverter.PdfHeaderOptions.HeaderText = "Document Header";
pdfConverter.PdfHeaderOptions.HeaderTextAlignment = HorizontalTextAlign.Center;
// Enable footer with page numbers
pdfConverter.PdfFooterOptions.ShowFooter = true;
pdfConverter.PdfFooterOptions.FooterText = "Page &p; of &P;";
pdfConverter.PdfFooterOptions.FooterTextAlignment = HorizontalTextAlign.Right;
// Convert HTML file to PDF
byte[] pdfBytes = pdfConverter.GetPdfBytesFromHtmlFile("input.html");
// Save to file
System.IO.File.WriteAllBytes("output-with-header-footer.pdf", pdfBytes);
Console.WriteLine("PDF with headers and footers created successfully!");
}
}
// NuGet: Install-Package ExpertPdf.HtmlToPdf
using ExpertPdf.HtmlToPdf;
using System;
class Program
{
static void Main()
{
// Create the PDF converter
PdfConverter pdfConverter = new PdfConverter();
// Enable header
pdfConverter.PdfHeaderOptions.ShowHeader = true;
pdfConverter.PdfHeaderOptions.HeaderText = "Document Header";
pdfConverter.PdfHeaderOptions.HeaderTextAlignment = HorizontalTextAlign.Center;
// Enable footer with page numbers
pdfConverter.PdfFooterOptions.ShowFooter = true;
pdfConverter.PdfFooterOptions.FooterText = "Page &p; of &P;";
pdfConverter.PdfFooterOptions.FooterTextAlignment = HorizontalTextAlign.Right;
// Convert HTML file to PDF
byte[] pdfBytes = pdfConverter.GetPdfBytesFromHtmlFile("input.html");
// Save to file
System.IO.File.WriteAllBytes("output-with-header-footer.pdf", pdfBytes);
Console.WriteLine("PDF with headers and footers created successfully!");
}
}
Imports ExpertPdf.HtmlToPdf
Imports System
Class Program
Shared Sub Main()
' Create the PDF converter
Dim pdfConverter As New PdfConverter()
' Enable header
pdfConverter.PdfHeaderOptions.ShowHeader = True
pdfConverter.PdfHeaderOptions.HeaderText = "Document Header"
pdfConverter.PdfHeaderOptions.HeaderTextAlignment = HorizontalTextAlign.Center
' Enable footer with page numbers
pdfConverter.PdfFooterOptions.ShowFooter = True
pdfConverter.PdfFooterOptions.FooterText = "Page &p; of &P;"
pdfConverter.PdfFooterOptions.FooterTextAlignment = HorizontalTextAlign.Right
' Convert HTML file to PDF
Dim pdfBytes As Byte() = pdfConverter.GetPdfBytesFromHtmlFile("input.html")
' Save to file
System.IO.File.WriteAllBytes("output-with-header-footer.pdf", pdfBytes)
Console.WriteLine("PDF with headers and footers created successfully!")
End Sub
End Class
Wdrożenie IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
// Create a PDF renderer
var renderer = new ChromePdfRenderer();
// Configure header
renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
CenterText = "Document Header",
DrawDividerLine = true
};
// Configure footer with page numbers
renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
{
RightText = "Page {page} of {total-pages}",
DrawDividerLine = true
};
// Convert HTML file to PDF
var pdf = renderer.RenderHtmlFileAsPdf("input.html");
// Save to file
pdf.SaveAs("output-with-header-footer.pdf");
Console.WriteLine("PDF with headers and footers created successfully!");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
// Create a PDF renderer
var renderer = new ChromePdfRenderer();
// Configure header
renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
CenterText = "Document Header",
DrawDividerLine = true
};
// Configure footer with page numbers
renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
{
RightText = "Page {page} of {total-pages}",
DrawDividerLine = true
};
// Convert HTML file to PDF
var pdf = renderer.RenderHtmlFileAsPdf("input.html");
// Save to file
pdf.SaveAs("output-with-header-footer.pdf");
Console.WriteLine("PDF with headers and footers created successfully!");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
' Create a PDF renderer
Dim renderer = New ChromePdfRenderer()
' Configure header
renderer.RenderingOptions.TextHeader = New TextHeaderFooter() With {
.CenterText = "Document Header",
.DrawDividerLine = True
}
' Configure footer with page numbers
renderer.RenderingOptions.TextFooter = New TextHeaderFooter() With {
.RightText = "Page {page} of {total-pages}",
.DrawDividerLine = True
}
' Convert HTML file to PDF
Dim pdf = renderer.RenderHtmlFileAsPdf("input.html")
' Save to file
pdf.SaveAs("output-with-header-footer.pdf")
Console.WriteLine("PDF with headers and footers created successfully!")
End Sub
End Class
IronPDF TextHeaderFooter udostępnia właściwości LeftText, CenterText i RightText z opcjonalnymi liniami podziału. W przypadku nagłówków opartych na HTML należy używać HtmlHeaderFooter. Aby uzyskać więcej opcji, zapoznaj się z dokumentacją dotyczącą nagłówków i stopek.
Ważne uwagi dotyczące migracji
Lokalizacja klucza licencyjnego
ExpertPdf stosuje licencjonowanie na konwerter.IronPDFkorzysta z jednej globalnej licencji, ustalanej jednorazowo podczas uruchamiania:
// ExpertPdf - per converter
pdfConverter.LicenseKey = "EXPERTPDF-LICENSE";
//IronPDF- global, set once
IronPdf.License.LicenseKey = "IRONPDF-LICENSE";
// ExpertPdf - per converter
pdfConverter.LicenseKey = "EXPERTPDF-LICENSE";
//IronPDF- global, set once
IronPdf.License.LicenseKey = "IRONPDF-LICENSE";
' ExpertPdf - per converter
pdfConverter.LicenseKey = "EXPERTPDF-LICENSE"
' IronPDF- global, set once
IronPdf.License.LicenseKey = "IRONPDF-LICENSE"
Konwersja tokenów numeracji stron
Zastąp tokeny ExpertPdf symbolami zastępczymi IronPDF:
// ExpertPdf
"Page &p; of &P;"
// IronPDF
"Page {page} of {total-pages}"
// ExpertPdf
"Page &p; of &P;"
// IronPDF
"Page {page} of {total-pages}"
Konsolidacja fragmentarycznych pakietów
Oddzielne pakiety ExpertPdf (PDFMerge, PDFSecurity, PDFSplit, PdfToImage) są zawarte w jednym pakiecie IronPDF:
// ExpertPdf - requires separate PDFMerge package
var merger = new PdfMerge();
merger.AppendPDFFile("file1.pdf");
merger.AppendPDFFile("file2.pdf");
merger.SaveMergedPDFToFile("merged.pdf");
//IronPDF- included in main package
var pdf1 = PdfDocument.FromFile("file1.pdf");
var pdf2 = PdfDocument.FromFile("file2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
// ExpertPdf - requires separate PDFMerge package
var merger = new PdfMerge();
merger.AppendPDFFile("file1.pdf");
merger.AppendPDFFile("file2.pdf");
merger.SaveMergedPDFToFile("merged.pdf");
//IronPDF- included in main package
var pdf1 = PdfDocument.FromFile("file1.pdf");
var pdf2 = PdfDocument.FromFile("file2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
' ExpertPdf - requires separate PDFMerge package
Dim merger As New PdfMerge()
merger.AppendPDFFile("file1.pdf")
merger.AppendPDFFile("file2.pdf")
merger.SaveMergedPDFToFile("merged.pdf")
' IronPDF - included in main package
Dim pdf1 As PdfDocument = PdfDocument.FromFile("file1.pdf")
Dim pdf2 As PdfDocument = PdfDocument.FromFile("file2.pdf")
Dim merged As PdfDocument = PdfDocument.Merge(pdf1, pdf2)
merged.SaveAs("merged.pdf")
Aby uzyskać więcej opcji łączenia, zapoznaj się z dokumentacją dotyczącą łączenia plików PDF.
Niestandardowe rozmiary stron
ExpertPdf wykorzystuje punkty.IronPDFużywa milimetrów. Konwertuj: points / 72 * 25.4 = mm
Lista kontrolna po migracji
Po zakończeniu migracji kodu sprawdź, czy:
- Wizualne porównanie wygenerowanych plików PDF
- Sprawdź nagłówki/stopki i numery stron
- Sprawdź ustawienia bezpieczeństwa/szyfrowania
- Sprawdzanie poprawności operacji scalania
- Sprawdź niestandardowe rozmiary stron
- Testy porównawcze wydajności
- Testowanie wieloplatformowe
- Usuń pliki licencji ExpertPdf
- Aktualizacja dokumentacji
Zabezpieczenie infrastruktury PDF na przyszłość
W obliczu zbliżającej się premiery .NET 10 i wprowadzenia nowych funkcji językowych w C# 14, wybór biblioteki PDF, która jest aktywnie rozwijana i oferuje nowoczesne renderowanie, zapewnia długoterminową kompatybilność. Comiesięczne aktualizacjeIronPDFi najnowszy silnik Chromium stanowią podstawę do generowania plików PDF, które będą nadal działać poprawnie z nowoczesnymi układami CSS3 (Flexbox, Grid) w miarę rozszerzania się projektów w latach 2025 i 2026 — w przeciwieństwie do przestarzałej wersji ExpertPdf dla przeglądarki Chrome, która utknęła w czasie.
Dodatkowe zasoby
- Dokumentacja IronPDF
- Samouczki dotyczące konwersji HTML do PDF
- Dokumentacja API
- Pakiet NuGet
- Opcje licencyjne
Przejście z ExpertPdf naIronPDFeliminuje problemy związane z nieaktualną dokumentacją, przestarzałym renderowaniem w przeglądarce Chrome, fragmentarycznymi licencjami na produkty oraz ograniczoną obsługą nowoczesnego środowiska .NET. Przejście na aktywnie utrzymywaną bibliotekę z najnowszym silnikiem Chromium gwarantuje, że generowanie plików PDF nadąża za ewoluującymi standardami internetowymi i .NET Frameworkem.

