Jak przeprowadzić migrację z PDF Duo do IronPDF w języku C#
Przejście z PDF Duo .NET naIronPDFprzenosi proces obsługi plików PDF w środowisku .NET z niejasnej, słabo udokumentówanej biblioteki o niejasnym statusie utrzymania do stabilnego, dobrze udokumentówanego i aktywnie utrzymywanego rozwiązania. Niniejszy przewodnik zawiera kompleksową, szczegółową ścieżkę migracji, która eliminuje ryzyko związane z porzuconymi bibliotekami, zapewniając jednocześnie dostęp do zaawansowanych funkcji, których PDF Duo nie jest w stanie zapewnić.
Dlaczego warto przejść z PDF Duo na IronPDF
Problem ryzyka związany z PDF Duo
PDF Duo .NET to mało znana biblioteka w ekosystemie .NET. Chociaż biblioteka ta mogła spodobać się programistom poszukującym prostoty, jej niejasność stanowi poważne wyzwanie dla aplikacji produkcyjnych:
-
Niejasne pochodzenie: Nieznany programista bez weryfikowalnego wsparcia ze strony firmy. Nie ma widocznego repozytorium GitHub ani kodu źródłowego, statystyki pobrań NuGet są ograniczone, a warunki licencji niejasne.
-
Brakująca dokumentacja: Znalezienie wiarygodnych informacji jest prawie niemożliwe. Nie ma oficjalnej Dokumentacji API, przykłady w społeczności są nieliczne, a oficjalne samouczki i przewodniki nie są dostępne. Wszelkie próby wykorzystania PDF Duo są utrudnione przez brak rzetelnej dokumentacji.
-
Status porzucony lub nieaktywny: Oznaki zaniedbania są widoczne w postaci sporadycznych aktualizacji lub ich braku. Na forach pomocy technicznej widoczne są posty z 2019 roku bez odpowiedzi. Bardzo realne ryzyko porzucenia projektu zagraża jego wykonalności w przypadku dużych przedsięwzięć.
-
Ograniczone funkcje: Tylko podstawowa funkcjonalność — proste konwertowanie HTML na PDF oraz podstawowe łączenie plików PDF bez zaawansowanych funkcji, takich jak formularze, zabezpieczenia czy znaki wodne.
-
Nieznany silnik renderujący: brak przejrzystości co do tego, co kryje się pod maską. Obsługa CSS/JavaScript jest nieznana, jakość renderowania jest nieprzewidywalna, a obsługa nowoczesnych funkcji internetowych jest niepewna.
- Ryzyko związane z pomocą techniczną: brak możliwości odwołania się w przypadku awarii. Brak profesjonalnego wsparcia, brak społeczności, która mogłaby pomóc, oraz całkowite ryzyko porzucenia projektu.
Porównanie PDF Duo i IronPDF
| Aspekt | PDF Duo .NET | IronPDF |
|---|---|---|
| Konserwacja | Nieznane/Nieaktywne | Aktywne, regularne aktualizacje |
| Dokumentacja | Niedokładne/brakujące | Kompleksowe |
| Wsparcie | None | Profesjonalny zespół wsparcia |
| Społeczność | ~0 użytkowników | Ponad 41 mln pobrań z NuGet |
| Renderowanie | Nieznany silnik | Nowoczesny Chromium |
| Funkcje | Podstawowe | W pełni funkcjonalny |
| Stabilność | Nieznane | Sprawdzone w praktyce |
| Licencjonowanie | Niejasne | Przejrzysty |
Dla zespołów planujących wdrożenie .NET 10 i C# 14 w latach 2025 i 2026,IronPDFzapewnia stabilną podstawę z aktywnym rozwojem i obszerną dokumentacją, eliminując niepewność związaną z poleganiem na porzuconej bibliotece.
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 PDF Duo .NET (if you can find the correct package name)
dotnet remove package PDFDuo.NET
dotnet remove package PDFDuo
dotnet remove package PDF-Duo
# Install IronPDF
dotnet add package IronPdf
# Remove PDF Duo .NET (if you can find the correct package name)
dotnet remove package PDFDuo.NET
dotnet remove package PDFDuo
dotnet remove package PDF-Duo
# Install IronPDF
dotnet add package IronPdf
Konfiguracja 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"
Zidentyfikuj zastosowanie PDF Duo
# Find all PDF Duo references
grep -r "PDFDuo\|HtmlToPdfConverter\|PdfMerger" --include="*.cs" .
# Find all PDF Duo references
grep -r "PDFDuo\|HtmlToPdfConverter\|PdfMerger" --include="*.cs" .
Kompletna dokumentacija API
Zmiany w przestrzeni nazw
| PDF Duo .NET | IronPDF |
|---|---|
using PDFDuo; |
using IronPdf; |
using PDFDuo.Document; |
using IronPdf; |
using PDFDuo.Rendering; |
using IronPdf.Rendering; |
using PDFDuo.Settings; |
using IronPdf; |
Mapowania konwersji HTML do PDF
| PDF Duo .NET | IronPDF |
|---|---|
new HtmlToPdfConverter() |
new ChromePdfRenderer() |
converter.ConvertHtmlString(html, path) |
renderer.RenderHtmlAsPdf(html).SaveAs(path) |
converter.ConvertUrl(url, path) |
renderer.RenderUrlAsPdf(url).SaveAs(path) |
converter.ConvertFile(htmlPath, pdfPath) |
renderer.RenderHtmlFileAsPdf(htmlPath).SaveAs(pdfPath) |
Mapowania konfiguracji stron
| PDF Duo .NET | IronPDF |
|---|---|
settings.PageSize = PageSize.A4 |
RenderingOptions.PaperSize = PdfPaperSize.A4 |
settings.PageSize = PageSize.Letter |
RenderingOptions.PaperSize = PdfPaperSize.Letter |
settings.Orientation = Landscape |
RenderingOptions.PaperOrientation = Landscape |
new Margins(top, right, bottom, left) |
Właściwości poszczególnych marginesów |
Mapowanie marginesów
| PDF Duo .NET | IronPDF |
|---|---|
new Margins(top, right, bottom, left) |
Poszczególne właściwości |
margins.Top |
RenderingOptions.MarginTop |
margins.Right |
RenderingOptions.MarginRight |
margins.Bottom |
RenderingOptions.MarginBottom |
margins.Left |
RenderingOptions.MarginLeft |
Mapowania operacji na dokumentach
| PDF Duo .NET | IronPDF |
|---|---|
PDFDocument.Load(path) |
PdfDocument.FromFile(path) |
document.Save(path) |
pdf.SaveAs(path) |
document.ToBytes() |
pdf.BinaryData |
new PdfMerger() |
PdfDocument.Merge() |
merger.AddFile(path) |
PdfDocument.FromFile(path) |
merger.Merge(output) |
merged.SaveAs(output) |
Nowe funkcje niedostępne w PDF Duo
| Funkcja | IronPDF |
|---|---|
| Nagłówki/stopki | RenderingOptions.HtmlHeader, HtmlFooter |
| Numery stron | {page}, {total-pages} symbole zastępcze |
| Znaki wodne | pdf.ApplyWatermark(html) |
| Ochrona hasłem | pdf.SecuritySettings |
| Wypełnianie formularzy | pdf.Form.Fields |
| Podpisy cyfrowe | pdf.SignWithFile() |
| Wyodrębnianie tekstu | pdf.ExtractAllText() |
| PDF na obraz | pdf.RasterizeToImageFiles() |
Przykłady migracji kodu
Przykład 1: Konwersja HTML do PDF
Przed (PDF Duo):
// NuGet: Install-Package PDFDuo.NET
using PDFDuo;
using System;
class Program
{
static void Main()
{
var converter = new HtmlToPdfConverter();
var htmlContent = "<h1>Hello World</h1><p>This is a PDF document.</p>";
converter.ConvertHtmlString(htmlContent, "output.pdf");
Console.WriteLine("PDF created successfully!");
}
}
// NuGet: Install-Package PDFDuo.NET
using PDFDuo;
using System;
class Program
{
static void Main()
{
var converter = new HtmlToPdfConverter();
var htmlContent = "<h1>Hello World</h1><p>This is a PDF document.</p>";
converter.ConvertHtmlString(htmlContent, "output.pdf");
Console.WriteLine("PDF created successfully!");
}
}
Imports PDFDuo
Imports System
Module Program
Sub Main()
Dim converter As New HtmlToPdfConverter()
Dim htmlContent As String = "<h1>Hello World</h1><p>This is a PDF document.</p>"
converter.ConvertHtmlString(htmlContent, "output.pdf")
Console.WriteLine("PDF created successfully!")
End Sub
End Module
Po (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var htmlContent = "<h1>Hello World</h1><p>This is a PDF document.</p>";
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully!");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var htmlContent = "<h1>Hello World</h1><p>This is a PDF document.</p>";
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully!");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim htmlContent = "<h1>Hello World</h1><p>This is a PDF document.</p>"
Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
pdf.SaveAs("output.pdf")
Console.WriteLine("PDF created successfully!")
End Sub
End Class
Podstawową różnicą jest tutaj wzorzec API. Funkcja HtmlToPdfConverter.ConvertHtmlString() programu PDF Duo przyjmuje zarówno kod HTML, jak i ścieżkę wyjściową w jednym wywołaniu, obsługując konwersję i zapis jednocześnie. Funkcja ChromePdfRenderer.RenderHtmlAsPdf() bibliotekiIronPDFzwraca najpierw obiekt PdfDocument, który następnie zapisujesz za pomocą SaveAs().
To podejście obiektowe zapewnia znaczące korzyści: przed zapisaniem można modyfikować plik PDF (dodawać znaki wodne, łączyć dokumenty, dodawać zabezpieczenia, wyodrębniać tekst) — żadna z tych czynności nie jest możliwa w przypadku podejścia PDF Duo polegającego na bezpośrednim zapisywaniu do pliku. Dodatkowe opcje renderowania można znaleźć w dokumentacji dotyczącej konwersji HTML do PDF.
Przykład 2: Konwersja adresów URL do formatu PDF
Przed (PDF Duo):
// NuGet: Install-Package PDFDuo.NET
using PDFDuo;
using System;
class Program
{
static void Main()
{
var converter = new HtmlToPdfConverter();
converter.ConvertUrl("https://www.example.com", "webpage.pdf");
Console.WriteLine("Webpage converted to PDF!");
}
}
// NuGet: Install-Package PDFDuo.NET
using PDFDuo;
using System;
class Program
{
static void Main()
{
var converter = new HtmlToPdfConverter();
converter.ConvertUrl("https://www.example.com", "webpage.pdf");
Console.WriteLine("Webpage converted to PDF!");
}
}
Imports PDFDuo
Imports System
Module Program
Sub Main()
Dim converter As New HtmlToPdfConverter()
converter.ConvertUrl("https://www.example.com", "webpage.pdf")
Console.WriteLine("Webpage converted to PDF!")
End Sub
End Module
Po (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
pdf.SaveAs("webpage.pdf");
Console.WriteLine("Webpage converted to PDF!");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
pdf.SaveAs("webpage.pdf");
Console.WriteLine("Webpage converted to PDF!");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderUrlAsPdf("https://www.example.com")
pdf.SaveAs("webpage.pdf")
Console.WriteLine("Webpage converted to PDF!")
End Sub
End Class
PDF Duo używa tej samej klasy HtmlToPdfConverter do konwersji adresów URL co ConvertUrl(url, outputPath).IronPDFużywa ChromePdfRenderer z dedykowaną metodą RenderUrlAsPdf(url), zwracając obiekt PdfDocument.
Kluczową zaletą jest to, że silnik renderującyIronPDFoparty na Chromium zapewnia nowoczesną obsługę CSS3 i JavaScript, podczas gdy nieznany silnik renderujący PDF Duo sprawia, że obsługa CSS/JavaScript jest niepewna, a jakość renderowania nieprzewidywalna. Dowiedz się więcej o konwersji adresów URL do formatu PDF.
Przykład 3: Łączenie plików PDF
Przed (PDF Duo):
// NuGet: Install-Package PDFDuo.NET
using PDFDuo;
using System;
class Program
{
static void Main()
{
var merger = new PdfMerger();
merger.AddFile("document1.pdf");
merger.AddFile("document2.pdf");
merger.Merge("merged.pdf");
Console.WriteLine("PDFs merged successfully!");
}
}
// NuGet: Install-Package PDFDuo.NET
using PDFDuo;
using System;
class Program
{
static void Main()
{
var merger = new PdfMerger();
merger.AddFile("document1.pdf");
merger.AddFile("document2.pdf");
merger.Merge("merged.pdf");
Console.WriteLine("PDFs merged successfully!");
}
}
Imports PDFDuo
Imports System
Class Program
Shared Sub Main()
Dim merger As New PdfMerger()
merger.AddFile("document1.pdf")
merger.AddFile("document2.pdf")
merger.Merge("merged.pdf")
Console.WriteLine("PDFs merged successfully!")
End Sub
End Class
Po (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
Console.WriteLine("PDFs merged successfully!");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
Console.WriteLine("PDFs merged successfully!");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim pdf1 = PdfDocument.FromFile("document1.pdf")
Dim pdf2 = PdfDocument.FromFile("document2.pdf")
Dim merged = PdfDocument.Merge(pdf1, pdf2)
merged.SaveAs("merged.pdf")
Console.WriteLine("PDFs merged successfully!")
End Sub
End Class
Ten przykład pokazuje fundamentalną różnicę architektoniczną. PDF Duo wykorzystuje dedykowaną klasę PdfMerger z metodą AddFile() do umieszczania plików w kolejce, a następnie Merge() do łączenia i zapisywania w jednym kroku.
IronPDF stosuje inny schemat: ładuje każdy plik PDF jako PdfDocument przy użyciu PdfDocument.FromFile(), a następnie wykorzystuje statyczną metodę PdfDocument.Merge() do ich połączenia. Zwraca to nowy obiekt PdfDocument, który zapisujesz osobno za pomocą SaveAs().
PodejścieIronPDFzapewnia większą elastyczność — przed scaleniem można edytować dowolny plik PDF, dodać znaki wodne do scalonego wyniku, zastosować ustawienia zabezpieczeń i nie tylko. Do scalania wielu plików można użyć LINQ:
var paths = new[] { "document1.pdf", "document2.pdf", "document3.pdf" };
var pdfs = paths.Select(PdfDocument.FromFile).ToList();
var merged = PdfDocument.Merge(pdfs);
merged.SaveAs("merged.pdf");
var paths = new[] { "document1.pdf", "document2.pdf", "document3.pdf" };
var pdfs = paths.Select(PdfDocument.FromFile).ToList();
var merged = PdfDocument.Merge(pdfs);
merged.SaveAs("merged.pdf");
Dim paths = {"document1.pdf", "document2.pdf", "document3.pdf"}
Dim pdfs = paths.Select(AddressOf PdfDocument.FromFile).ToList()
Dim merged = PdfDocument.Merge(pdfs)
merged.SaveAs("merged.pdf")
Dowiedz się więcej o łączeniu i dzieleniu plików PDF.
Nowe możliwości po migracji
Po migracji doIronPDFzyskujesz możliwości, których PDF Duo po prostu nie jest w stanie zapewnić:
Nagłówki i stopki z numerami stron
using IronPdf;
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
HtmlFragment = "<div style='text-align:center; font-size:10px;'>Company Report</div>",
MaxHeight = 25
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
HtmlFragment = "<div style='text-align:center; font-size:10px;'>Page {page} of {total-pages}</div>",
MaxHeight = 25
};
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("report.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
HtmlFragment = "<div style='text-align:center; font-size:10px;'>Company Report</div>",
MaxHeight = 25
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
HtmlFragment = "<div style='text-align:center; font-size:10px;'>Page {page} of {total-pages}</div>",
MaxHeight = 25
};
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("report.pdf");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter With {
.HtmlFragment = "<div style='text-align:center; font-size:10px;'>Company Report</div>",
.MaxHeight = 25
}
renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter With {
.HtmlFragment = "<div style='text-align:center; font-size:10px;'>Page {page} of {total-pages}</div>",
.MaxHeight = 25
}
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("report.pdf")
PDF Duo nie obsługuje nagłówków ani stopek — nie ma odpowiednika tej funkcji.IronPDFzapewnia pełną obsługę HTML/CSS z wbudowanymi symbolami zastępczymi dla treści dynamicznych, takich jak numery stron. Zobacz przewodnik dotyczący nagłówków i stopek.
Znaki wodne
using IronPdf;
using IronPdf.Editing;
var pdf = PdfDocument.FromFile("document.pdf");
pdf.ApplyWatermark(
"<h1 style='color:red; opacity:0.3;'>CONFIDENTIAL</h1>",
45,
VerticalAlignment.Middle,
HorizontalAlignment.Center);
pdf.SaveAs("watermarked.pdf");
using IronPdf;
using IronPdf.Editing;
var pdf = PdfDocument.FromFile("document.pdf");
pdf.ApplyWatermark(
"<h1 style='color:red; opacity:0.3;'>CONFIDENTIAL</h1>",
45,
VerticalAlignment.Middle,
HorizontalAlignment.Center);
pdf.SaveAs("watermarked.pdf");
Imports IronPdf
Imports IronPdf.Editing
Dim pdf = PdfDocument.FromFile("document.pdf")
pdf.ApplyWatermark("<h1 style='color:red; opacity:0.3;'>CONFIDENTIAL</h1>", 45, VerticalAlignment.Middle, HorizontalAlignment.Center)
pdf.SaveAs("watermarked.pdf")
PDF Duo nie obsługuje znaków wodnych.IronPDFzapewnia znaki wodne oparte na HTML z pełną obsługą stylów CSS.
Ochrona hasłem
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights;
pdf.SaveAs("secured.pdf");
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights;
pdf.SaveAs("secured.pdf");
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SecuritySettings.UserPassword = "userpassword"
pdf.SecuritySettings.OwnerPassword = "ownerpassword"
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights
pdf.SaveAs("secured.pdf")
PDF Duo nie obsługuje ochrony hasłem ani ustawień zabezpieczeń.
Wyodrębnianie tekstu
var pdf = PdfDocument.FromFile("document.pdf");
string text = pdf.ExtractAllText();
var pdf = PdfDocument.FromFile("document.pdf");
string text = pdf.ExtractAllText();
Dim pdf = PdfDocument.FromFile("document.pdf")
Dim text As String = pdf.ExtractAllText()
PDF Duo nie obsługuje wyodrębniania tekstu.
Ważne uwagi dotyczące migracji
Obiekt Margins a poszczególne właściwości
PDF Duo wykorzystuje pojedynczy obiekt Margins;IronPDFwykorzystuje poszczególne właściwości:
// PDF Duo:
new Margins(top: 20, right: 15, bottom: 20, left: 15)
// IronPDF:
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginRight = 15;
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.MarginLeft = 15;
// PDF Duo:
new Margins(top: 20, right: 15, bottom: 20, left: 15)
// IronPDF:
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginRight = 15;
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.MarginLeft = 15;
' PDF Duo:
New Margins(top:=20, right:=15, bottom:=20, left:=15)
' IronPDF:
renderer.RenderingOptions.MarginTop = 20
renderer.RenderingOptions.MarginRight = 15
renderer.RenderingOptions.MarginBottom = 20
renderer.RenderingOptions.MarginLeft = 15
Nazewnictwo metod zapisywania
Różne nazwy metod zapisywania:
// PDF Duo:
document.Save("output.pdf");
// IronPDF:
pdf.SaveAs("output.pdf");
// PDF Duo:
document.Save("output.pdf");
// IronPDF:
pdf.SaveAs("output.pdf");
' PDF Duo:
document.Save("output.pdf")
' IronPDF:
pdf.SaveAs("output.pdf")
Ładowanie plików PDF
Różne nazwy metod ładowania:
// PDF Duo:
PDFDocument.Load("document.pdf")
// IronPDF:
PdfDocument.FromFile("document.pdf")
// PDF Duo:
PDFDocument.Load("document.pdf")
// IronPDF:
PdfDocument.FromFile("document.pdf")
' PDF Duo:
PDFDocument.Load("document.pdf")
' IronPDF:
PdfDocument.FromFile("document.pdf")
Obiekt Settings do właściwości
PDF Duo wykorzystuje obiekty ustawień przekazywane do konstruktora;IronPDFwykorzystuje właściwości:
// PDF Duo:
var settings = new PDFSettings { PageSize = PageSize.A4 };
var converter = new HtmlToPdfConverter(settings);
// IronPDF:
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
// PDF Duo:
var settings = new PDFSettings { PageSize = PageSize.A4 };
var converter = new HtmlToPdfConverter(settings);
// IronPDF:
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
' PDF Duo:
Dim settings As New PDFSettings With {.PageSize = PageSize.A4}
Dim converter As New HtmlToPdfConverter(settings)
' IronPDF:
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
Porównanie funkcji
| Funkcja | PDF Duo .NET | IronPDF |
|---|---|---|
| HTML do PDF | Podstawowe | Pełna obsługa CSS3, JavaScript |
| URL do pliku PDF | Podstawowe | Pełna wersja z obsługą autoryzacji |
| Łączenie plików PDF | Tak | Tak |
| Nagłówki/stopki | Nie | Pełna obsługa HTML |
| Numery stron | Nie | Wbudowane symbole zastępcze |
| Znaki wodne | Nie | Oparty na HTML |
| Ochrona hasłem | Nie | Pełne opcje bezpieczeństwa |
| Wypełnianie formularzy | Nie | Tak |
| Podpisy cyfrowe | Nie | Tak |
| Ekstrakcja tekstu | Nie | Tak |
| PDF na obrazy | Nie | Tak |
| Obsługa asynchroniczna | Nieznane | Pełna obsługa async/await |
| .NET Core/5+ | Nieznane | Obsługiwane |
Lista kontrolna migracji
Przed migracją
- Znajdź wszystkie odniesienia do PDF Duo w kodzie źródłowym
- Odzwierciedl aktualne ustawienia (rozmiar strony, marginesy itp.)
- Wymień wszystkie używane operacje na plikach PDF
- Zidentyfikuj możliwości wprowadzenia nowych funkcji (nagłówki, znaki wodne, zabezpieczenia)
- Uzyskaj klucz licencyjny IronPDF
Zmiany w pakiecie
- Usuń pakiet NuGet
PDFDuo.NET - Zainstaluj pakiet NuGet
IronPdf:dotnet add package IronPdf - Zaktualizuj importy przestrzeni nazw z
using PDFDuo;nausing IronPdf;
Zmiany w kodzie
- Dodaj konfigurację klucza licencyjnego podczas uruchamiania
- Zastąp
HtmlToPdfConverterprzezChromePdfRenderer - Zastąp
ConvertHtmlString(html, path)przezRenderHtmlAsPdf(html).SaveAs(path) - Zastąp
ConvertUrl(url, path)przezRenderUrlAsPdf(url).SaveAs(path) - Zastąp wzorzec
PdfMergerwzorcemPdfDocument.Merge() - Konwersja obiektu
Marginsna indywidualne właściwości marginesów - Zastąp
Save()przezSaveAs() - Zastąp
Load()przezFromFile()
Po migracji
- Przeprowadź testy regresji porównujące wynik w formacie PDF
- Sprawdź, czy rozmiary stron i marginesy są zgodne
- Przetestuj z użyciem złożonego kodu HTML/CSS (nowoczesny silnikIronPDFpowinien sobie z tym lepiej poradzić)
- Dodaj nowe funkcje (nagłówki, stopki, znaki wodne, zabezpieczenia)
- Aktualizacja dokumentacji

