Przejdź do treści stopki
PRZEWODNIKI MIGRACJI

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:

  1. 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.

  2. 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.

  3. 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ęć.

  4. 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.

  5. 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.

  6. 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

  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 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
SHELL

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

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" .
SHELL

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

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

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

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

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

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

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

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

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

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

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

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

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

Ł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")
$vbLabelText   $csharpLabel

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

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; na using IronPdf;

Zmiany w kodzie

  • Dodaj konfigurację klucza licencyjnego podczas uruchamiania
  • Zastąp HtmlToPdfConverter przez ChromePdfRenderer
  • Zastąp ConvertHtmlString(html, path) przez RenderHtmlAsPdf(html).SaveAs(path)
  • Zastąp ConvertUrl(url, path) przez RenderUrlAsPdf(url).SaveAs(path)
  • Zastąp wzorzec PdfMerger wzorcem PdfDocument.Merge()
  • Konwersja obiektu Margins na indywidualne właściwości marginesów
  • Zastąp Save() przez SaveAs()
  • Zastąp Load() przez FromFile()

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

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