Przejdź do treści stopki
PRZEWODNIKI MIGRACJI

Jak przeprowadzić migrację z ExpertPdf do IronPDF w języku C#

ExpertPdf to komercyjny konwerter HTML-to-PDF dla .NET opublikowany przezOutside Software Inc.Najnowsza wersja na nuget.org to v20.1.0 (kwiecień 2025), więc suite wciąż jest aktywnie dystrybuowane — tarcia są w kształcie produktu, nie w porzuceniu.ExpertPdfopiera się na silniku Trident (IE) oraz silniku "WebKit2" dodanym w wersji v12.2; nowoczesny Chromium nie jest domyślny. Publiczne listy ComponentSource historycznie pokazywały HtmlToPdf Converter w cenie około 550 $–1 200 $ za poziom (zweryfikuj bezpośrednio z dostawcą). Zestaw narzędzi jest również podzielony na oddzielne pakiety NuGet — HtmlToPdf, MergePdf, PdfSecurity, SplitPdf, PdfToImage, PdfCreator — każdy zazwyczaj licencjonowany oddzielnie. Przewodnik ten zapewnia krok po kroku ścieżkę migracji zExpertPdfdo IronPDF, biblioteki PDF dla .NET z najnowszym renderowaniem Chromium, częstymi wydaniami i all-in-one pakietem.

Dlaczego warto przejść zExpertPdfna 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

  1. Rzadka dokumentacja, powolne tempo: Referencje dokumentacji istnieją na html-to-pdf.net, ale samouczki, artykuły o funkcjach i wpisy changeloga są rzadkie. Notatki wydania dla wersji v20.1 (kwiecień 2025) wymieniają "poprawki błędów i ulepszania wydajności" — brak nagłówków z funkcjami.

  2. Starsze kanały renderowania:ExpertPdfdostarcza silnik Trident (IE) plus silnik "WebKit2" dodany w wersji v12.2; nowoczesny Chromium nie jest domyślny. Funkcje CSS3 takie jak Flexbox, Grid i zmienne CSS renderują się najlepiej na silniku WebKit2 — zweryfikuj w odniesieniu do docelowego HTML przed migracją dużych zasobów.

  3. Premium pricing dla starzejącego się stosu: Publiczne listy ComponentSource historycznie pokazywały HtmlToPdf Converter w cenie około 550 $–1 200 $ za poziom (zweryfikuj bezpośrednio z dostawcą — strona zamówienia na expertpdf.net była niedostępna w momencie pisania).

  4. Rozproszony pakiet produktów:ExpertPdfsprzedaje oddzielne pakiety — ExpertPdf.HtmlToPdf.NetCore / ExpertPdfHtmlToPdf, ExpertPdf.MergePdf, ExpertPdf.PdfSecurity, ExpertPdf.SplitPdf, ExpertPdf.PdfToImage, ExpertPdf.PdfCreator — każdy zazwyczaj licencjonowany oddzielnie.

  5. Brak nowoczesnych natywnych celów .NET: Pakiety .NetCore są skierowane na .NET Standard 2.0 / .NET Framework 4.6.1, więc działają na .NET 5/6/7/8/9 — ale nie otrzymujesz natywnych wielo-celowych kompilacji, przyjaznych dla przycinania asemblii ani async-first API.

Porównanie architektur

Aspekt ExpertPdf IronPDF
Dostawca Outside Software Inc. "Iron Software"
Najnowsza wersja (nuget.org) v20.1.0 (Kwi 2025) Stale aktualizowane
Dokumentacja Tylko dokumentacja referencyjna, rzadka dokumentacja dla samouczków Stale aktualizowane
Silnik renderujący Trident (IE) + "WebKit2" (dodano v12.2) Najnowsza wersja Chromium
Obsługa CSS CSS3 najlepiej na WebKit2; częściowo na dziedzictwie Pełna obsługa CSS3 (Flexbox, Grid)
Cena ~550 $–1 200 $ (zweryfikuj z dostawcą) Zobacz ironpdf.com/pricing
Model produktu Fragmentowane (6+ pakietów NuGet) Biblioteka typu "wszystko w jednym"
Nowoczesny .NET .NET Standard 2.0 (działa na .NET 5-9) .NET 6/7/8/9+ celowanie wielozadaniowe
Obsługa asynchroniczna Ograniczone Pełna obsługa async/await

Kluczowe korzyści z migracji

  1. Nowoczesne renderowanie: najnowszy silnik Chromium zapewniający idealną jakość obrazu
  2. Pakiet "wszystko w jednym": generowanie plików PDF, scałanie, zabezpieczenia, wyodrębnianie w jednym pakiecie NuGet
  3. Aktywny rozwój: comiesięczne aktualizacje zawierające nowe funkcje i poprawki bezpieczeństwa
  4. Lepsza dokumentacja: kompleksowe samouczki i przykłady
  5. Prawdziwa wielopłatformowość: 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 licencyjny IronPDF(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 allExpertPdfreferences
grep -r "ExpertPdf\|PdfConverter\|PDFMerge\|PdfSecurityManager" --include="*.cs" .

# Check NuGet packages
dotnet list package | grep -i "ExpertPdf"
# Find allExpertPdfreferences
grep -r "ExpertPdf\|PdfConverter\|PDFMerge\|PdfSecurityManager" --include="*.cs" .

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

Typowe pakietyExpertPdfdo szukania (zweryfikuj dokładną nazwę na nuget.org — zestaw używa niespójnego stylu):

  • ExpertPdfHtmlToPdf (.NET Framework) / ExpertPdf.HtmlToPdf.NetCore (.NET Core / 5-9) — HTML to PDF
  • ExpertPdf.MergePdf — łączenie PDF
  • ExpertPdf.PdfSecurity — szyfrowanie i hasła
  • ExpertPdf.SplitPdf — dzielenie PDF
  • ExpertPdf.PdfToImage — konwersja PDF na obraz
  • ExpertPdf.PdfCreator — pełny SDK PDF (rysowanie, formularze, podpisy)

Zrozumienie zmiany wzorca podstawowego

ExpertPdf korzysta z PdfConverter z bezpośrednimi metodami zwracania tablicy bajtów.IronPDF uż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 pakietyExpertPdfi zainstaluj IronPDF:

# Remove allExpertPdfpackages (use whichever variants you have installed)
dotnet remove package ExpertPdfHtmlToPdf
dotnet remove package ExpertPdf.HtmlToPdf.NetCore
dotnet remove package ExpertPdf.MergePdf
dotnet remove package ExpertPdf.PdfSecurity
dotnet remove package ExpertPdf.SplitPdf
dotnet remove package ExpertPdf.PdfToImage
dotnet remove package ExpertPdf.PdfCreator

# Install IronPDF(includes all features)
dotnet add package IronPdf
# Remove allExpertPdfpackages (use whichever variants you have installed)
dotnet remove package ExpertPdfHtmlToPdf
dotnet remove package ExpertPdf.HtmlToPdf.NetCore
dotnet remove package ExpertPdf.MergePdf
dotnet remove package ExpertPdf.PdfSecurity
dotnet remove package ExpertPdf.SplitPdf
dotnet remove package ExpertPdf.PdfToImage
dotnet remove package ExpertPdf.PdfCreator

# Install IronPDF(includes all features)
dotnet add package IronPdf
SHELL

Krok 2: Aktualizacja odniesień do przestrzeni nazw

Zastąp przestrzenie nazwExpertPdfna IronPDF:

// Remove these
using ExpertPdf.HtmlToPdf;

// Add this
using IronPdf;
// Remove these
using ExpertPdf.HtmlToPdf;

// Add this
using IronPdf;
Imports IronPdf
$vbLabelText   $csharpLabel

Krok 3: Skonfiguruj licencję

ExpertPdf stosuje licencjonowanie na konwerter.IronPDF korzysta 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"
$vbLabelText   $csharpLabel

Kompletna dokumentacja API

Mapowanie klas podstawowych

KlasaExpertPdf Odpowiednik IronPDF
PdfConverter ChromePdfRenderer
PdfDocumentOptions ChromePdfRenderOptions
PdfHeaderOptions TextHeaderFooter lub HtmlHeaderFooter
PdfFooterOptions TextHeaderFooter lub HtmlHeaderFooter
PDFMerge PdfDocument.Merge()

Mapowanie metod

MetodaExpertPdf Metoda IronPDF
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

OpcjaExpertPdf 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 i IronPDF uż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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

Podejście IronPDF zwraca obiekt PdfDocument, umożliwiający dodatkową manipulację (łączenie, watermarking, 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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

IronPDF's RenderingOptions zapewnia bezpośredni dostęp do właściwości 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 demonstruje istotną różnicę w konfiguracji nagłówka/stopki—ExpertPdf używa oddzielnych klas PdfHeaderOptions i PdfFooterOptions z tokenami &P;, podczas gdy IronPDF używa TextHeaderFooter z zastępcami {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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

IronPDF's TextHeaderFooter zapewnia właściwości LeftText, CenterText, i RightText z opcjonalnymi liniami podziału. Dla nagłówków opartych na HTML, użyj 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.IronPDF korzysta z jednej globalnej licencji, ustalanej jednorazowo podczas uruchamiania:

//ExpertPdf- per converter
pdfConverter.LicenseKey = "EXPERTPDF-LICENSE";

//IronPDF- global, set once
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
//ExpertPdf- per converter
pdfConverter.LicenseKey = "EXPERTPDF-LICENSE";

//IronPDF- global, set once
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
'ExpertPdf- per converter
pdfConverter.LicenseKey = "EXPERTPDF-LICENSE"

'IronPDF- global, set once
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

Konwersja tokenów numeracji stron

Zastąp tokenyExpertPdfsymbolami 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}"
$vbLabelText   $csharpLabel

Konsolidacja fragmentarycznych pakietów

Oddzielne pakietyExpertPdf(PDFMerge, PDFSecurity, PDFSplit, PdfToImage) są zawarte w jednym pakiecie IronPDF:

//ExpertPdf- requires separate ExpertPdf.MergePdf package
PDFMerge 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 ExpertPdf.MergePdf package
PDFMerge 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 ExpertPdf.MergePdf 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 = PdfDocument.FromFile("file1.pdf")
Dim pdf2 = PdfDocument.FromFile("file2.pdf")
Dim merged = PdfDocument.Merge(pdf1, pdf2)
merged.SaveAs("merged.pdf")
$vbLabelText   $csharpLabel

Aby uzyskać więcej opcji łączenia, zapoznaj się z dokumentacją dotyczącą łączenia plików PDF.

Niestandardowe rozmiary stron

ExpertPdf wykorzystuje punkty.IronPDF uż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 scałania
  • Sprawdź niestandardowe rozmiary stron
  • Testy porównawcze wydajności
  • Testowanie wielopłatformowe
  • Usuń pliki licencji ExpertPdf
  • Aktualizacja dokumentacji

Dodatkowe zasoby


Migracja zExpertPdfdo IronPDF zastępuje rzadka dokumentację, dziedzictwo kanałów renderowania i fragmentowane licencjonowanie produktu aktywnie utrzymywaną biblioteką na najnowszym silniku Chromium — utrzymując generowanie PDF zgodnie z obecnymi standardami webowymi i nowoczesnymi celami .NET.

Zwróć uwagęExpertPDF to zarejestrowany znak towarowy jego odpowiedniego właściciela (Outside Software Inc.). Ta strona nie jest powiązana z, zatwierdzona przez ani sponsorowana przezOutside Software Inc.Wszystkie nazwy produktów, loga 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ę...

Czytaj więcej

Zespół wsparcia Iron

Jesteśmy online 24 godziny, 5 dni w tygodniu.
Czat
E-mail
Zadzwoń do mnie