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:
-
Ograniczony zestaw funkcji:PeachPDFnie posiada zaawansowanych funkcji, takich jak podpisy cyfrowe, zgodność zPDF/Aoraz zaawansowane wyodrębnianie tekstu.
-
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.
-
Niepewna przyszłość: Nowe biblioteki bez ugruntowanej pozycji wiążą się z ryzykiem związanym z ich wdrożeniem.
-
Podstawowa obsługa HTML: Ograniczone możliwości renderowania CSS i JavaScript.
- 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
- Środowisko .NET: .NET Framework 4.6.2+ lub .NET Core 3.1+ / .NET 5/6/7/8/9+
- Dostęp do NuGet: Możliwość instalowania pakietów NuGet
- 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
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"
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" .
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
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
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
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
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
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
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
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()
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
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>"
}
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
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")
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")
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")
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")
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)
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
HtmlToPdfConverterprzezChromePdfRenderer - Zastąp
converter.Convert(html)przezrenderer.RenderHtmlAsPdf(html) - Zastąp
converter.ConvertUrl(url)przezrenderer.RenderUrlAsPdf(url) - Zastąp
File.WriteAllBytes(path, pdf)przezpdf.SaveAs(path) - Zastąp obiekty
FooterobiektamiHtmlFooter - 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)

