Przejdź do treści stopki
PRZEWODNIKI MIGRACJI

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

Przejście zPeachPDFnaIronPDFzapewnia dostęp do generowania plików PDF na poziomie korporacyjnym z kompleksowymi funkcjami, aktywnym rozwojem i profesjonalnym wsparciem. Ten przewodnik zawiera kompletną, krok po kroku ścieżkę migracji, która przekształca podstawowy proces konwersji HTML do PDF w w pełni funkcjonalne rozwiązanie PDF z nowoczesnym renderowaniem Chromium, zaawansowanymi opcjami bezpieczeństwa i rozbudowanymi możliwościami edycji.

Dlaczego warto przejść zPeachPDFna IronPDF

Zrozumienie PeachPDF

PeachPDF to stosunkowo nowy gracz w ekosystemie .NET, stworzony dla programistów, którzy potrzebują konwertować HTML na PDF. Jako biblioteka,PeachPDFzapewnia czystą implementację .NET, wyróżniając się tym, że nie opiera się na procesach zewnętrznych, co gwarantuje płynną integrację na platformach obsługujących .NET. Ta cecha sprawia, żePeachPDFjest atrakcyjnym wyborem dla projektów poszukujących lekkiego, zarządzanego rozwiązania bibliotecznego.

Pomimo swojego potencjału,PeachPDFjest nadal w fazie rozwoju, co wskazuje zarówno na ekscytujące możliwości, jak i na istotne ograniczenia.PeachPDFpozostaje atrakcyjny dzięki czystemu rdzeniu .NET Core, który zapewnia proste wdrożenie w różnych środowiskach. Jednak oznacza to również ograniczone zastosowanie, mniejszą bazę użytkowników i wsparcie oparte na społeczności.

Ograniczenia PeachPDF

PeachPDF to stosunkowo nowa, mniej znana biblioteka PDF, której brakuje dojrzałości, funkcji i wsparcia charakterystycznego dla uznanych rozwiązań. Główne powody migracji:

  1. Ograniczony zestaw funkcji:PeachPDFnie posiada zaawansowanych funkcji, takich jak podpisy cyfrowe, zgodność zPDF/Aoraz zaawansowane wyodrębnianie tekstu.

  2. Mała społeczność: Ograniczona dokumentacja, przykłady i wsparcie społeczności. Ze względu na mniejszą bazę użytkowników wsparcie społeczności może być ograniczone, co utrudnia uzyskanie pomocy lub znalezienie obszernej dokumentacji.

  3. Niepewna przyszłość: Nowe biblioteki bez ugruntowanej pozycji wiążą się z ryzykiem związanym z ich wdrożeniem.

  4. Podstawowa obsługa HTML: Ograniczone możliwości renderowania CSS i JavaScript.

  5. Brak wsparcia dla Enterprise: Brak profesjonalnego wsparcia ani opcji SLA.

PorównaniePeachPDFi IronPDF

Funkcja/Cechy PeachPDF IronPDF
Wdrożenie Czysty .NET Zarządzane z szeroką kompatybilnością
Licencja Open Source (BSD-3-Clause) Komercjalne
Baza użytkowników Mały Duża (ponad 40 mln pobrań)
Wsparcie Tworzone przez społeczność Professionalism and dedicated support
Renderowanie HTML Podstawowe Pełny Chromium
Obsługa CSS Ograniczone Pełny CSS3
JavaScript Podstawowe Pełna wersja ES2024
Podpisy cyfrowe Nie Tak
Zgodność z PDF/A Nie Tak
Dokumentacja Ograniczone Obszerne
Stan rozwoju W trakcie opracowywania Dojrzała, stabilna wersja

IronPDF wyróżnia się szerszą funkcjonalnością, obsługując nie tylko konwersję HTML do PDF, ale także OCR, znakowanie wodne i inne zaawansowane funkcje. Jej profesjonalna struktura wsparcia jest zdecydowaną zaletą, oferującą szybkie rozwiązania problemów napotykanych przez programistów.

Dla zespołów planujących wdrożenie .NET 10 i C# 14 w latach 2025 i 2026,IronPDFzapewnia kompleksowe funkcje i aktywne wsparcie techniczne, które gwarantują długoterminową stabilność i kompatybilność z nowoczesnymi frameworkami .NET.


Zanim zaczniesz

Wymagania wstępne

  1. Środowisko .NET: .NET Framework 4.6.2+ lub .NET Core 3.1+ / .NET 5/6/7/8/9+
  2. Dostęp do NuGet: Możliwość instalowania pakietów NuGet
  3. Licencja IronPDF: Uzyskaj klucz licencyjny na stronie ironpdf.com

Zmiany w pakiecie NuGet

# Remove PeachPDF
dotnet remove package PeachPDF

# Install IronPDF
dotnet add package IronPdf
# Remove PeachPDF
dotnet remove package PeachPDF

# Install IronPDF
dotnet add package IronPdf
SHELL

Konfiguracja licencji

// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
' Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

Zidentyfikuj zastosowanie PeachPDF

# AuditPeachPDFusage in codebase
grep -r "using PeachPDF" --include="*.cs" .
grep -r "HtmlToPdfConverter\|Convert\|ConvertUrl" --include="*.cs" .
# AuditPeachPDFusage in codebase
grep -r "using PeachPDF" --include="*.cs" .
grep -r "HtmlToPdfConverter\|Convert\|ConvertUrl" --include="*.cs" .
SHELL

Kompletna dokumentacija API

Zmiany w przestrzeni nazw

// Before: PeachPDF
using PeachPDF;
using System.IO;

// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
// Before: PeachPDF
using PeachPDF;
using System.IO;

// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
Imports IronPdf
Imports IronPdf.Rendering
Imports System.IO
$vbLabelText   $csharpLabel

Mapowania podstawowych interfejsów API

PeachPDF IronPDF
new HtmlToPdfConverter() new ChromePdfRenderer()
converter.Convert(html) renderer.RenderHtmlAsPdf(html)
converter.ConvertUrl(url) renderer.RenderUrlAsPdf(url)
converter.Header renderer.RenderingOptions.HtmlHeader
converter.Footer renderer.RenderingOptions.HtmlFooter
File.WriteAllBytes(path, pdf) pdf.SaveAs(path)
pdf (byte[]) pdf.BinaryData
PdfReader.LoadFromFile(path) PdfDocument.FromFile(path)
document.MergeWith(other) PdfDocument.Merge(pdfs)

Przykłady migracji kodu

Przykład 1: Konwersja ciągu znaków HTML do formatu PDF

Przed (PeachPDF):

using PeachPDF;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var html = "<html><body><h1>Hello World</h1></body></html>";
        var pdf = converter.Convert(html);
        File.WriteAllBytes("output.pdf", pdf);
    }
}
using PeachPDF;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var html = "<html><body><h1>Hello World</h1></body></html>";
        var pdf = converter.Convert(html);
        File.WriteAllBytes("output.pdf", pdf);
    }
}
Imports PeachPDF
Imports System.IO

Class Program
    Shared Sub Main()
        Dim converter = New HtmlToPdfConverter()
        Dim html = "<html><body><h1>Hello World</h1></body></html>"
        Dim pdf = converter.Convert(html)
        File.WriteAllBytes("output.pdf", pdf)
    End Sub
End Class
$vbLabelText   $csharpLabel

Po (IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var html = "<html><body><h1>Hello World</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var html = "<html><body><h1>Hello World</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}
Imports IronPdf
Imports System

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim html = "<html><body><h1>Hello World</h1></body></html>"
        Dim pdf = renderer.RenderHtmlAsPdf(html)
        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

Ten przykład ilustruje zasadniczą różnicę między tymi dwiema bibliotekami.PeachPDFużywa HtmlToPdfConverter z metodą Convert(), która zwraca byte[], wymagając File.WriteAllBytes() do zapisania.IronPDFużywa ChromePdfRenderer z RenderHtmlAsPdf(), co zwraca obiekt PdfDocument z wbudowaną metodą SaveAs().

Kluczowe zalety podejścia IronPDF: obiekt PdfDocument można dalej modyfikować (dodawanie znaków wodnych, scalanie, ustawienia zabezpieczeń) przed zapisaniem, podczas gdy tablica bajtówPeachPDFjest ostatecznym wynikiem. PodejścieIronPDFoferuje bardziej przejrzystą składnię i lepszą integrację z nowoczesnymi aplikacjami .NET. Kompleksowe przykłady można znaleźć w dokumentacji dotyczącej konwersji HTML do PDF.

Przykład 2: Konwersja adresów URL do formatu PDF

Przed (PeachPDF):

using PeachPDF;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var url = "https://www.example.com";
        var pdf = converter.ConvertUrl(url);
        File.WriteAllBytes("webpage.pdf", pdf);
    }
}
using PeachPDF;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var url = "https://www.example.com";
        var pdf = converter.ConvertUrl(url);
        File.WriteAllBytes("webpage.pdf", pdf);
    }
}
Imports PeachPDF
Imports System.IO

Class Program
    Shared Sub Main()
        Dim converter = New HtmlToPdfConverter()
        Dim url = "https://www.example.com"
        Dim pdf = converter.ConvertUrl(url)
        File.WriteAllBytes("webpage.pdf", pdf)
    End Sub
End Class
$vbLabelText   $csharpLabel

Po (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");
    }
}
// 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");
    }
}
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")
    End Sub
End Class
$vbLabelText   $csharpLabel

PeachPDF używa ConvertUrl(), aIronPDFużywa RenderUrlAsPdf(). Nazewnictwo metod wIronPDFjest bardziej opisowe — wyraźnie wskazuje, że adres URL jest renderowany jako plik PDF. Obie biblioteki obsługują konwersję adresów URL do formatu PDF w podobny sposób, ale pełny silnik Chromium wIronPDFzapewnia lepsze renderowanie nowoczesnych stron internetowych z złożonymi arkuszami CSS i skryptami JavaScript. Dowiedz się więcej z naszych samouczków.

Przykład 3: Dodawanie nagłówków i stopek

Przed (PeachPDF):

using PeachPDF;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        converter.Header = "<div style='text-align:center'>My Header</div>";
        converter.Footer = "<div style='text-align:center'>Page {page}</div>";
        var html = "<html><body><h1>Document Content</h1></body></html>";
        var pdf = converter.Convert(html);
        File.WriteAllBytes("document.pdf", pdf);
    }
}
using PeachPDF;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        converter.Header = "<div style='text-align:center'>My Header</div>";
        converter.Footer = "<div style='text-align:center'>Page {page}</div>";
        var html = "<html><body><h1>Document Content</h1></body></html>";
        var pdf = converter.Convert(html);
        File.WriteAllBytes("document.pdf", pdf);
    }
}
Imports PeachPDF
Imports System.IO

Class Program
    Shared Sub Main()
        Dim converter = New HtmlToPdfConverter()
        converter.Header = "<div style='text-align:center'>My Header</div>"
        converter.Footer = "<div style='text-align:center'>Page {page}</div>"
        Dim html = "<html><body><h1>Document Content</h1></body></html>"
        Dim pdf = converter.Convert(html)
        File.WriteAllBytes("document.pdf", pdf)
    End Sub
End Class
$vbLabelText   $csharpLabel

Po (IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter() { HtmlFragment = "<div style='text-align:center'>My Header</div>" };
        renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter() { HtmlFragment = "<div style='text-align:center'>Page {page}</div>" };
        var html = "<html><body><h1>Document Content</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("document.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter() { HtmlFragment = "<div style='text-align:center'>My Header</div>" };
        renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter() { HtmlFragment = "<div style='text-align:center'>Page {page}</div>" };
        var html = "<html><body><h1>Document Content</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("document.pdf");
    }
}
Imports IronPdf
Imports IronPdf.Rendering
Imports System

Module Program
    Sub Main()
        Dim renderer As New ChromePdfRenderer()
        renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter() With {.HtmlFragment = "<div style='text-align:center'>My Header</div>"}
        renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter() With {.HtmlFragment = "<div style='text-align:center'>Page {page}</div>"}
        Dim html As String = "<html><body><h1>Document Content</h1></body></html>"
        Dim pdf = renderer.RenderHtmlAsPdf(html)
        pdf.SaveAs("document.pdf")
    End Sub
End Module
$vbLabelText   $csharpLabel

Ten przykład pokazuje kluczową różnicę architektoniczną.PeachPDFwykorzystuje proste właściwości ciągów znaków (converter.Header i converter.Footer) dla nagłówków i stopek.IronPDFużywa obiektów HtmlHeaderFooter przypisanych do RenderingOptions.HtmlHeader i RenderingOptions.HtmlFooter.

PodejścieIronPDFoferuje większą elastyczność — obiekty HtmlHeaderFooter mogą zawierać dodatkowe właściwości, takie jak MaxHeight, służące do kontrolowania rozmiaru nagłówka/stopki. Należy zauważyć, że obie biblioteki używają {page} jako symbolu zastępczego numeru strony.IronPDFobsługuje również {total-pages} dla całkowitej liczby stron.

Należy zwrócić uwagę na dodatkową przestrzeń nazw wymaganą dla IronPDF: using IronPdf.Rendering; jest potrzebna dla klasy HtmlHeaderFooter.


Ważne uwagi dotyczące migracji

Zmiana klasy konwertera

PeachPDF używa HtmlToPdfConverter;IronPDFużywa ChromePdfRenderer:

// PeachPDF
var converter = new HtmlToPdfConverter();

// IronPDF
var renderer = new ChromePdfRenderer();
// PeachPDF
var converter = new HtmlToPdfConverter();

// IronPDF
var renderer = new ChromePdfRenderer();
' PeachPDF
Dim converter As New HtmlToPdfConverter()

' IronPDF
Dim renderer As New ChromePdfRenderer()
$vbLabelText   $csharpLabel

Zmiana typu zwracanej wartości

PeachPDF zwraca byte[];IronPDFzwraca PdfDocument:

// PeachPDF: Returns byte array
byte[] pdf = converter.Convert(html);
File.WriteAllBytes("output.pdf", pdf);

// IronPDF: Returns PdfDocument object
PdfDocument pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// Or get bytes: byte[] bytes = pdf.BinaryData;
// PeachPDF: Returns byte array
byte[] pdf = converter.Convert(html);
File.WriteAllBytes("output.pdf", pdf);

// IronPDF: Returns PdfDocument object
PdfDocument pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// Or get bytes: byte[] bytes = pdf.BinaryData;
' PeachPDF: Returns byte array
Dim pdf As Byte() = converter.Convert(html)
File.WriteAllBytes("output.pdf", pdf)

' IronPDF: Returns PdfDocument object
Dim pdfDoc As PdfDocument = renderer.RenderHtmlAsPdf(html)
pdfDoc.SaveAs("output.pdf")
' Or get bytes: Dim bytes As Byte() = pdfDoc.BinaryData
$vbLabelText   $csharpLabel

Zmiana właściwości nagłówka/stopki

// PeachPDF: Simple string properties
converter.Header = "<div>Header</div>";
converter.Footer = "<div>Footer</div>";

// IronPDF: HtmlHeaderFooter objects
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter() 
{ 
    HtmlFragment = "<div>Header</div>" 
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter() 
{ 
    HtmlFragment = "<div>Footer</div>" 
};
// PeachPDF: Simple string properties
converter.Header = "<div>Header</div>";
converter.Footer = "<div>Footer</div>";

// IronPDF: HtmlHeaderFooter objects
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter() 
{ 
    HtmlFragment = "<div>Header</div>" 
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter() 
{ 
    HtmlFragment = "<div>Footer</div>" 
};
' PeachPDF: Simple string properties
converter.Header = "<div>Header</div>"
converter.Footer = "<div>Footer</div>"

' IronPDF: HtmlHeaderFooter objects
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter() With {
    .HtmlFragment = "<div>Header</div>"
}
renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter() With {
    .HtmlFragment = "<div>Footer</div>"
}
$vbLabelText   $csharpLabel

Zmiany nazw metod

PeachPDF IronPDF
Convert(html) RenderHtmlAsPdf(html)
ConvertUrl(url) RenderUrlAsPdf(url)
File.WriteAllBytes() SaveAs()

Nowe możliwości po migracji

Po migracji doIronPDFzyskujesz możliwości, którychPeachPDFnie jest w stanie zapewnić:

Łączenie plików PDF

var pdf1 = PdfDocument.FromFile("doc1.pdf");
var pdf2 = PdfDocument.FromFile("doc2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
var pdf1 = PdfDocument.FromFile("doc1.pdf");
var pdf2 = PdfDocument.FromFile("doc2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
CONVERTER NOT RUNNING
$vbLabelText   $csharpLabel

Znaki wodne w HTML

var pdf = PdfDocument.FromFile("document.pdf");
pdf.ApplyWatermark("<div style='color: red; font-size: 48pt;'>DRAFT</div>");
pdf.SaveAs("watermarked.pdf");
var pdf = PdfDocument.FromFile("document.pdf");
pdf.ApplyWatermark("<div style='color: red; font-size: 48pt;'>DRAFT</div>");
pdf.SaveAs("watermarked.pdf");
Dim pdf = PdfDocument.FromFile("document.pdf")
pdf.ApplyWatermark("<div style='color: red; font-size: 48pt;'>DRAFT</div>")
pdf.SaveAs("watermarked.pdf")
$vbLabelText   $csharpLabel

Ochrona hasłem

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

pdf.SecuritySettings.OwnerPassword = "owner123";
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint;

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

pdf.SecuritySettings.OwnerPassword = "owner123";
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint;

pdf.SaveAs("protected.pdf");
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Confidential</h1>")

pdf.SecuritySettings.OwnerPassword = "owner123"
pdf.SecuritySettings.UserPassword = "user123"
pdf.SecuritySettings.AllowUserCopyPasteContent = False
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint

pdf.SaveAs("protected.pdf")
$vbLabelText   $csharpLabel

Podpisy cyfrowe

using IronPdf.Signing;

var pdf = PdfDocument.FromFile("document.pdf");
var signature = new PdfSignature("certificate.pfx", "password")
{
    SigningReason = "Document Approval",
    SigningLocation = "New York"
};
pdf.Sign(signature);
pdf.SaveAs("signed.pdf");
using IronPdf.Signing;

var pdf = PdfDocument.FromFile("document.pdf");
var signature = new PdfSignature("certificate.pfx", "password")
{
    SigningReason = "Document Approval",
    SigningLocation = "New York"
};
pdf.Sign(signature);
pdf.SaveAs("signed.pdf");
Imports IronPdf.Signing

Dim pdf = PdfDocument.FromFile("document.pdf")
Dim signature = New PdfSignature("certificate.pfx", "password") With {
    .SigningReason = "Document Approval",
    .SigningLocation = "New York"
}
pdf.Sign(signature)
pdf.SaveAs("signed.pdf")
$vbLabelText   $csharpLabel

Operacje asynchroniczne

var renderer = new ChromePdfRenderer();
var pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Async PDF</h1>");
pdf.SaveAs("async_output.pdf");
var renderer = new ChromePdfRenderer();
var pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Async PDF</h1>");
pdf.SaveAs("async_output.pdf");
Dim renderer As New ChromePdfRenderer()
Dim pdf = Await renderer.RenderHtmlAsPdfAsync("<h1>Async PDF</h1>")
pdf.SaveAs("async_output.pdf")
$vbLabelText   $csharpLabel

Podsumowanie porównania funkcji

Funkcja PeachPDF IronPDF
HTML do PDF Podstawowe Pełny Chromium
URL do pliku PDF Ograniczone Tak
CSS Grid/Flexbox Nie Tak
JavaScript Ograniczone Pełna wersja ES2024
Łączenie plików PDF Tak Tak
Podział plików PDF Ograniczone Tak
Znaki wodne Ograniczone Pełny kod HTML
Nagłówki/stopki Podstawowe Pełny kod HTML
Podpisy cyfrowe Nie Tak
PDF/A Nie Tak
Wypełnianie formularzy Ograniczone Tak
Ekstrakcja tekstu Podstawowe Tak
Wyodrębnianie obrazów Nie Tak
Obsługa asynchroniczna Ograniczone Tak
Wieloplatformowe Nieznane Tak

Typowe problemy związane z migracją

Problem 1: Różne wzorce API

Problem:PeachPDFwykorzystuje wzorzec konwertera z wyjściem w postaci tablicy bajtów;IronPDFwykorzystuje wzorzec renderera z wyjściem PdfDocument.

Rozwiązanie:

//PeachPDFpattern
var converter = new HtmlToPdfConverter();
var pdf = converter.Convert(html);
File.WriteAllBytes(path, pdf);

//IronPDFpattern
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs(path);
//PeachPDFpattern
var converter = new HtmlToPdfConverter();
var pdf = converter.Convert(html);
File.WriteAllBytes(path, pdf);

//IronPDFpattern
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs(path);
' PeachPDFpattern
Dim converter As New HtmlToPdfConverter()
Dim pdf As Byte() = converter.Convert(html)
File.WriteAllBytes(path, pdf)

' IronPDFpattern
Dim renderer As New ChromePdfRenderer()
Dim pdfDocument As PdfDocument = renderer.RenderHtmlAsPdf(html)
pdfDocument.SaveAs(path)
$vbLabelText   $csharpLabel

Problem 2: Różnica w metodach zapisywania

Problem:PeachPDFwymaga File.WriteAllBytes();IronPDFposiada wbudowaną funkcję SaveAs().

Rozwiązanie: Zastąp File.WriteAllBytes("path", pdf) przez pdf.SaveAs("path").

Problem 3: Obiekty nagłówka/stopki

Problem:PeachPDFużywa właściwości ciągów znaków;IronPDFwykorzystuje właściwości obiektów.

Rozwiązanie: Otocz ciągi HTML obiektami HtmlHeaderFooter z właściwością HtmlFragment.


Lista kontrolna migracji

Przed migracją

  • Sprawdź, jakPeachPDFjest używany w kodzie
  • Dokumentowanie konfiguracji niestandardowych
  • Zwróć uwagę na wszystkie implementacje nagłówków/stopek
  • Uzyskaj klucz licencyjnyIronPDFze strony ironpdf.com
  • Najpierw przetestuj z Licencją Trial IronPDF

Zmiany w pakiecie

  • Usuń pakiet NuGet PeachPDF
  • Zainstaluj pakiet NuGet IronPdf: dotnet add package IronPdf

Zmiany w kodzie

  • Zaktualizuj importy przestrzeni nazw (using PeachPDF;using IronPdf;)
  • Dodaj using IronPdf.Rendering; dla funkcji nagłówka/stopki
  • Zastąp HtmlToPdfConverter przez ChromePdfRenderer
  • Zastąp converter.Convert(html) przez renderer.RenderHtmlAsPdf(html)
  • Zastąp converter.ConvertUrl(url) przez renderer.RenderUrlAsPdf(url)
  • Zastąp File.WriteAllBytes(path, pdf) przez pdf.SaveAs(path)
  • Zastąp obiekty Footer obiektami HtmlFooter
  • Dodaj inicjalizację licencji podczas uruchamiania aplikacji

Po migracji

  • Sprawdź jakość renderowania HTML
  • Sprawdź, czy wynik w formacie PDF jest zgodny z oczekiwaniami
  • Sprawdź renderowanie nagłówków/stopek z numerami stron
  • W razie potrzeby dodaj nowe funkcje (zabezpieczenia, znaki wodne, scalanie)

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

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie