PORóWNANIE

EO.PDF vs IronPDF: Przewodnik po porównaniu technicznym

Kiedy programiści .NET szukają bibliotek do generowania plików PDF, EO.Pdf wyróżnia się jako opcja komercyjna z możliwością renderowania opartą na Chromium. Jednak duży rozmiar pakietu wynoszący 126 MB, problemy z migracją starszych wersji przeglądarki Internet Explorer oraz statyczne podejście do konfiguracji globalnej sprawiają, że wiele zespołów rozważa alternatywne rozwiązania.IronPDFoferuje dopracowaną implementację Chromium z konfiguracją opartą na instancjach, bezpieczną dla wątków i prawdziwą obsługą wielu platform.

Niniejsze porównanie analizuje obie biblioteki pod kątem technicznie istotnych aspektów, aby pomóc profesjonalnym programistom i architektom w podejmowaniu świadomych decyzji dotyczących ich potrzeb w zakresie PDF .NET.

Zrozumienie pliku EO.PDF

EO.Pdf to komercyjna biblioteka PDF w cenie 799 USD za licencję programisty, oferująca renderowanie oparte na Chromium w celu generowania plików PDF o wysokiej jakości. Biblioteka została zbudowana na niestandardowym silniku, przechodząc od pierwotnej platformy renderującej opartej na przeglądarce Internet Explorer do systemu opartego na silniku Chromium.

Pomimo tej aktualizacji przejście EO.PDF na Chromium spowodowało problemy z kompatybilnością wynikające z bagażu dziedzictwa z czasów Internet Explorera. Biblioteka zawiera własny silnik Chromium, co powoduje znaczny ślad wdrożeniowy wynoszący 126 MB, który zwiększa rozmiar obrazów Docker, spowalnia potoki CI/CD i podnosi koszty infrastruktury.

Ponadto, chociaż EO.PDF reklamuje się jako narzędzie wielopłatformowe, jego wydajność i łatwość obsługi są ukierunkowane przede wszystkim na system Windows, a obsługa systemu Linux jest często opisywana jako drugorzędna. Biblioteka używa statycznego HtmlToPdf.Options do konfiguracji, co stwarza problemy z bezpieczeństwem wątków w aplikacjach sieciowych z wieloma najemcami.

Zrozumienie IronPDF

IronPDF to biblioteka PDF dla platformy .NET, zaprojektowana z myślą o nowoczesnych środowiskach .NET, wykorzystująca zoptymalizowane podejście do pakietowania oparte na silniku Chromium, co skutkuje mniejszym rozmiarem (około 50 MB). Biblioteka zapewnia jednakowe wsparcie dla wszystkich platform, nie faworyzując systemu Windows, dzięki czemu nadaje się do aplikacji wdrażanych w różnorodnych środowiskach.

IronPDF używa konfiguracji opartej na instancjach przez obiekty ChromePdfRenderer, zapewniając bezpieczne dla wątków działanie w scenariuszach równoległych. Każda instancja renderer'a utrzymuje swój własny RenderingOptions, izolując konfigurację od innych operacji.

Porównanie architektury i konfiguracji

Podstawowa różnica architektoniczna między tymi bibliotekami .NET do obsługi plików PDF polega na podejściu do konfiguracji i charakterystyce wdrażania.

Aspekt EO.Pdf IronPDF
Rozmiar pakietu 126 MB ~50 MB (zoptymalizowane)
Kwestie związane z dziedzictwem Bagaż migracji IE Przejrzysty, nowoczesny kod źródłowy
Obsługa platform Skupione na systemie Windows Prawdziwa wielopłatformowość
Konfiguracja Statyczne/globalne Oparte na instancjach, bezpieczne dla wątków
Cena 799 USD/programista Konkurencyjne ceny
Projektowanie API Mieszane (HtmlToPdf + ACM) Jednolity, spójny
Dokumentacja Ograniczone Szczegółowe samouczki
Nowoczesny .NET .NET Standard .NET 6/7/8/9+ natywne
Obsługa asynchroniczna Ograniczone Pełna obsługa async/await

Model konfiguracji stanowi kluczową różnicę. Statyczny HtmlToPdf.Options EO.Pdf wpływa na wszystkie konwersje globalnie, tworząc warunki wyścigu w aplikacjach wielowątkowych. Podejście oparte na instancjach stosowane przezIronPDFzapewnia izolowaną konfigurację dla każdego renderera.

Porównanie kodu: typowe operacje na plikach PDF

Konwersja HTML do PDF

Konwersja treści HTML do formatu PDF pokazuje podstawowe różnice między interfejsami API.

EO.PDF:

// NuGet: Install-Package EO.Pdf
using EO.Pdf;
using System;

class Program
{
    static void Main()
    {
        string html = "<html><body><h1>Hello World</h1><p>This is a PDF generated from HTML.</p></body></html>";

        HtmlToPdf.ConvertHtml(html, "output.pdf");

        Console.WriteLine("PDF created successfully!");
    }
}
// NuGet: Install-Package EO.Pdf
using EO.Pdf;
using System;

class Program
{
    static void Main()
    {
        string html = "<html><body><h1>Hello World</h1><p>This is a PDF generated from HTML.</p></body></html>";

        HtmlToPdf.ConvertHtml(html, "output.pdf");

        Console.WriteLine("PDF created successfully!");
    }
}
Imports EO.Pdf
Imports System

Class Program
    Shared Sub Main()
        Dim html As String = "<html><body><h1>Hello World</h1><p>This is a PDF generated from HTML.</p></body></html>"

        HtmlToPdf.ConvertHtml(html, "output.pdf")

        Console.WriteLine("PDF created successfully!")
    End Sub
End Class
$vbLabelText   $csharpLabel

IronPDF:

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

class Program
{
    static void Main()
    {
        string html = "<html><body><h1>Hello World</h1><p>This is a PDF generated from HTML.</p></body></html>";

        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");

        Console.WriteLine("PDF created successfully!");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        string html = "<html><body><h1>Hello World</h1><p>This is a PDF generated from HTML.</p></body></html>";

        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");

        Console.WriteLine("PDF created successfully!");
    }
}
Imports IronPdf
Imports System

Class Program
    Shared Sub Main()
        Dim html As String = "<html><body><h1>Hello World</h1><p>This is a PDF generated from HTML.</p></body></html>"

        Dim renderer = New ChromePdfRenderer()
        Dim pdf = renderer.RenderHtmlAsPdf(html)
        pdf.SaveAs("output.pdf")

        Console.WriteLine("PDF created successfully!")
    End Sub
End Class
$vbLabelText   $csharpLabel

EO.Pdf używa statycznej metody HtmlToPdf.ConvertHtml(), która bezpośrednio zapisuje do ścieżki pliku.IronPDFużywa podejścia dwuetapowego: RenderHtmlAsPdf() zwraca obiekt PdfDocument, który może być dalej manipulowany przed wywołaniem SaveAs(). Ten dwuetapowy schemat zapewnia większą elastyczność w zakresie operacji przetwarzania końcowego, takich jak scałanie, dodawanie znaków wodnych lub stosowanie ustawień zabezpieczeń.

Aby uzyskać informacje na temat zaawansowanych opcji renderowania HTML, zapoznaj się z przewodnikiem dotyczącym konwersji HTML do PDF.

Konwersja adresów URL do formatu PDF

Przechwytywanie stron internetowych jako dokumentów PDF wykazuje podobne wzorce API.

EO.PDF:

// NuGet: Install-Package EO.Pdf
using EO.Pdf;
using System;

class Program
{
    static void Main()
    {
        string url = "https://www.example.com";

        HtmlToPdf.ConvertUrl(url, "webpage.pdf");

        Console.WriteLine("PDF from URL created successfully!");
    }
}
// NuGet: Install-Package EO.Pdf
using EO.Pdf;
using System;

class Program
{
    static void Main()
    {
        string url = "https://www.example.com";

        HtmlToPdf.ConvertUrl(url, "webpage.pdf");

        Console.WriteLine("PDF from URL created successfully!");
    }
}
Imports EO.Pdf
Imports System

Module Program
    Sub Main()
        Dim url As String = "https://www.example.com"

        HtmlToPdf.ConvertUrl(url, "webpage.pdf")

        Console.WriteLine("PDF from URL created successfully!")
    End Sub
End Module
$vbLabelText   $csharpLabel

IronPDF:

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

class Program
{
    static void Main()
    {
        string url = "https://www.example.com";

        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf(url);
        pdf.SaveAs("webpage.pdf");

        Console.WriteLine("PDF from URL created successfully!");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        string url = "https://www.example.com";

        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf(url);
        pdf.SaveAs("webpage.pdf");

        Console.WriteLine("PDF from URL created successfully!");
    }
}
Imports IronPdf
Imports System

Class Program
    Shared Sub Main()
        Dim url As String = "https://www.example.com"

        Dim renderer = New ChromePdfRenderer()
        Dim pdf = renderer.RenderUrlAsPdf(url)
        pdf.SaveAs("webpage.pdf")

        Console.WriteLine("PDF from URL created successfully!")
    End Sub
End Class
$vbLabelText   $csharpLabel

Obie biblioteki oferują możliwość konwersji URL na PDF, gdzie EO.Pdf używa statycznego ConvertUrl(), aIronPDFużywa opartego na instancjach RenderUrlAsPdf(). Obowiązuje to samo rozróżnienie dotyczące bezpieczeństwa wątków.

Więcej informacji na temat renderowania adresów URL można znaleźć w dokumentacji funkcji URL to PDF.

Operacje łączenia plików PDF

Połączenie wielu dokumentów PDF ilustruje różne podejścia do modelu obiektowego.

EO.PDF:

// NuGet: Install-Package EO.Pdf
using EO.Pdf;
using System;

class Program
{
    static void Main()
    {
        PdfDocument doc1 = new PdfDocument("file1.pdf");
        PdfDocument doc2 = new PdfDocument("file2.pdf");

        PdfDocument mergedDoc = new PdfDocument();
        mergedDoc.Append(doc1);
        mergedDoc.Append(doc2);

        mergedDoc.Save("merged.pdf");

        Console.WriteLine("PDFs merged successfully!");
    }
}
// NuGet: Install-Package EO.Pdf
using EO.Pdf;
using System;

class Program
{
    static void Main()
    {
        PdfDocument doc1 = new PdfDocument("file1.pdf");
        PdfDocument doc2 = new PdfDocument("file2.pdf");

        PdfDocument mergedDoc = new PdfDocument();
        mergedDoc.Append(doc1);
        mergedDoc.Append(doc2);

        mergedDoc.Save("merged.pdf");

        Console.WriteLine("PDFs merged successfully!");
    }
}
Imports EO.Pdf
Imports System

Class Program
    Shared Sub Main()
        Dim doc1 As New PdfDocument("file1.pdf")
        Dim doc2 As New PdfDocument("file2.pdf")

        Dim mergedDoc As New PdfDocument()
        mergedDoc.Append(doc1)
        mergedDoc.Append(doc2)

        mergedDoc.Save("merged.pdf")

        Console.WriteLine("PDFs merged successfully!")
    End Sub
End Class
$vbLabelText   $csharpLabel

IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var pdf1 = PdfDocument.FromFile("file1.pdf");
        var pdf2 = PdfDocument.FromFile("file2.pdf");

        var merged = PdfDocument.Merge(new List<PdfDocument> { pdf1, pdf2 });
        merged.SaveAs("merged.pdf");

        Console.WriteLine("PDFs merged successfully!");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var pdf1 = PdfDocument.FromFile("file1.pdf");
        var pdf2 = PdfDocument.FromFile("file2.pdf");

        var merged = PdfDocument.Merge(new List<PdfDocument> { pdf1, pdf2 });
        merged.SaveAs("merged.pdf");

        Console.WriteLine("PDFs merged successfully!");
    }
}
Imports IronPdf
Imports System
Imports System.Collections.Generic

Module Program
    Sub Main()
        Dim pdf1 = PdfDocument.FromFile("file1.pdf")
        Dim pdf2 = PdfDocument.FromFile("file2.pdf")

        Dim merged = PdfDocument.Merge(New List(Of PdfDocument) From {pdf1, pdf2})
        merged.SaveAs("merged.pdf")

        Console.WriteLine("PDFs merged successfully!")
    End Sub
End Module
$vbLabelText   $csharpLabel

EO.Pdf ładuje dokumenty poprzez konstruktory (new PdfDocument(path)) i używa Append() do dodawania dokumentów do pustego kontenera.IronPDFużywa statycznych metod fabrycznych (PdfDocument.FromFile()) oraz statycznej metody PdfDocument.Merge(), która akceptuje kolekcję i zwraca scalony wynik.

Zapoznaj się z dodatkowymi operacjami scałania w dokumentacji dotyczącej scałania plików PDF.

Ustawienia strony niestandardowej

Konfiguracja rozmiaru strony i marginesów ilustruje różnice w modelach konfiguracji.

EO.PDF:

// NuGet: Install-Package EO.Pdf
using EO.Pdf;
using System;

class Program
{
    static void Main()
    {
        HtmlToPdfOptions options = new HtmlToPdfOptions();
        options.PageSize = PdfPageSizes.A4;
        options.OutputArea = new RectangleF(0.5f, 0.5f, 7.5f, 10.5f);

        HtmlToPdf.ConvertUrl("file:///C:/input.html", "output.pdf", options);
        Console.WriteLine("PDF with custom settings created.");
    }
}
// NuGet: Install-Package EO.Pdf
using EO.Pdf;
using System;

class Program
{
    static void Main()
    {
        HtmlToPdfOptions options = new HtmlToPdfOptions();
        options.PageSize = PdfPageSizes.A4;
        options.OutputArea = new RectangleF(0.5f, 0.5f, 7.5f, 10.5f);

        HtmlToPdf.ConvertUrl("file:///C:/input.html", "output.pdf", options);
        Console.WriteLine("PDF with custom settings created.");
    }
}
Imports EO.Pdf
Imports System

Class Program
    Shared Sub Main()
        Dim options As New HtmlToPdfOptions()
        options.PageSize = PdfPageSizes.A4
        options.OutputArea = New RectangleF(0.5F, 0.5F, 7.5F, 10.5F)

        HtmlToPdf.ConvertUrl("file:///C:/input.html", "output.pdf", options)
        Console.WriteLine("PDF with custom settings created.")
    End Sub
End Class
$vbLabelText   $csharpLabel

IronPDF:

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
        renderer.RenderingOptions.MarginTop = 20;
        renderer.RenderingOptions.MarginBottom = 20;
        renderer.RenderingOptions.MarginLeft = 20;
        renderer.RenderingOptions.MarginRight = 20;

        var pdf = renderer.RenderHtmlFileAsPdf("C:/input.html");
        pdf.SaveAs("output.pdf");
        Console.WriteLine("PDF with custom settings created.");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
        renderer.RenderingOptions.MarginTop = 20;
        renderer.RenderingOptions.MarginBottom = 20;
        renderer.RenderingOptions.MarginLeft = 20;
        renderer.RenderingOptions.MarginRight = 20;

        var pdf = renderer.RenderHtmlFileAsPdf("C:/input.html");
        pdf.SaveAs("output.pdf");
        Console.WriteLine("PDF with custom settings created.");
    }
}
Imports IronPdf
Imports IronPdf.Rendering
Imports System

Class Program
    Shared Sub Main()
        Dim renderer As New ChromePdfRenderer()
        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
        renderer.RenderingOptions.MarginTop = 20
        renderer.RenderingOptions.MarginBottom = 20
        renderer.RenderingOptions.MarginLeft = 20
        renderer.RenderingOptions.MarginRight = 20

        Dim pdf = renderer.RenderHtmlFileAsPdf("C:/input.html")
        pdf.SaveAs("output.pdf")
        Console.WriteLine("PDF with custom settings created.")
    End Sub
End Class
$vbLabelText   $csharpLabel

EO.Pdf używa HtmlToPdfOptions z OutputArea określonym jako RectangleF w całach.IronPDFużywa indywidualnych właściwości marginesu (MarginTop, MarginBottom, MarginLeft, MarginRight) w milimetrach na obiekcie RenderingOptions. Różnica jednostek wymaga konwersji: inches × 25.4 = millimeters.

Odniesienie do mapowania metod

Dla programistów rozważających migrację z EO.PDF lub porównujących możliwości, poniższe zestawienie przedstawia równoważne operacje:

Podstawowe operacje

EO.Pdf IronPDF
HtmlToPdf.ConvertHtml(html, path) renderer.RenderHtmlAsPdf(html) potem SaveAs()
HtmlToPdf.ConvertUrl(url, path) renderer.RenderUrlAsPdf(url) potem SaveAs()
HtmlToPdf.Options.PageSize renderer.RenderingOptions.PaperSize
HtmlToPdf.Options.OutputArea MarginTop/Bottom/Left/Right
new PdfDocument(path) PdfDocument.FromFile(path)
doc.Append(other) PdfDocument.Merge(doc1, doc2)
doc.Save(path) pdf.SaveAs(path)

Mapowanie konfiguracji

Opcja EO.PDF IronPDF RenderingOptions
Options.PageSize = PdfPageSizes.A4 PaperSize = PdfPaperSize.A4
Options.PageSize = PdfPageSizes.Letter PaperSize = PdfPaperSize.Letter
Options.OutputArea (RectangleF) MarginTop, MarginBottom, itd.
Options.BaseUrl BaseUrl

Mapowanie klas

Klasa EO.PDF OdpowiednikIronPDF
HtmlToPdf ChromePdfRenderer
PdfDocument PdfDocument
HtmlToPdfOptions ChromePdfRenderOptions
AcmRender Nie jest potrzebne
AcmText HTML <span>, <p>
AcmBlock HTML <div>

Podsumowanie porównania funkcji

Funkcja EO.Pdf IronPDF
HTML do PDF
URL do pliku PDF
Łączenie plików PDF
Manipulacja stronami
Nagłówki/stopki ✅(oparte na HTML)
Bezpieczeństwo/szyfrowanie
Pola formularzy
Znaki wodne
Renderowanie ACM HTML/CSS (bez ACM)
Konfiguracja bezpieczna dla wątków ❌ (statyczne) ✅(przykład)
Wielopłatformowe Ograniczone Obsługiwane

Problem bezpieczeństwa wątków

Statyczna konfiguracja EO.PDF powoduje fundamentalny problem w aplikacjach wielowątkowych:

// EO.Pdf - DANGER: Static options affect ALL threads!
HtmlToPdf.Options.PageSize = PdfPageSizes.A4;
HtmlToPdf.Options.OutputArea = new RectangleF(0.5f, 0.5f, 7.5f, 10.5f);
HtmlToPdf.ConvertHtml(html, "output.pdf");
// EO.Pdf - DANGER: Static options affect ALL threads!
HtmlToPdf.Options.PageSize = PdfPageSizes.A4;
HtmlToPdf.Options.OutputArea = new RectangleF(0.5f, 0.5f, 7.5f, 10.5f);
HtmlToPdf.ConvertHtml(html, "output.pdf");
' EO.Pdf - DANGER: Static options affect ALL threads!
HtmlToPdf.Options.PageSize = PdfPageSizes.A4
HtmlToPdf.Options.OutputArea = New RectangleF(0.5F, 0.5F, 7.5F, 10.5F)
HtmlToPdf.ConvertHtml(html, "output.pdf")
$vbLabelText   $csharpLabel

W aplikacji internetowej obsługującej wiele równoczesnych żądań konfiguracja jednego żądania wpływa na wszystkie pozostałe żądania. Powoduje to powstanie warunków wyścigu, w których pliki PDF mogą być generowane z nieoczekiwanymi ustawieniami.

Podejście oparte na instancjach stosowane przezIronPDFeliminuje ten problem:

//IronPDF- Thread-safe, isolated options per renderer instance
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 12.7;
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
//IronPDF- Thread-safe, isolated options per renderer instance
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 12.7;
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
'IronPDF- Thread-safe, isolated options per renderer instance
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.MarginTop = 12.7
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
$vbLabelText   $csharpLabel

Każda instancja ChromePdfRenderer utrzymuje własną konfigurację, zapewniając izolację w scenariuszach równoległych.

Kiedy zespoły rozważają przejście z EO.PDF na IronPDF

Zespoły programistów rozważają przejście z EO.PDF naIronPDFz kilku powodów:

Optymalizacja rozmiaru pakietu: Rozmiar pakietu EO.PDF wynoszący 126 MB powoduje powiększenie obrazów Docker, spowalnia procesy CI/CD i zwiększa koszty infrastruktury. Zoptymalizowane opakowanieIronPDF(~50 MB) zapewnia znaczną poprawę wydajności wdrażania.

Wymagania dotyczące bezpieczeństwa wątków: Aplikacje sieciowe z wieloma najemcami wymagają izolowanej konfiguracji dla każdego żądania. Statyczny HtmlToPdf.Options EO.Pdf tworzy warunki wyścigu, które podejście oparte na instancjachIronPDFeliminuje.

Wdrażanie wielopłatformowe: Aplikacje przeznaczone dla środowisk Linux lub macOS napotykają ograniczenia związane z projektem EO.PDF, który jest zorientowany na system Windows.IronPDFzapewnia prawdziwą obsługę wielu platform z zachowaniem spójnego działania.

Unikanie bagażu historycznego: Migracja EO.PDF z przeglądarki Internet Explorer do Chromium spowodowała problemy z kompatybilnością. Przejrzysta, nowoczesna baza koduIronPDFpozwala uniknąć tego długu technicznego.

Wsparcie dla nowoczesnego .NET: Aplikacje przeznaczone dla .NET 6/7/8/9+ korzystają z natywnej obsługiIronPDFw przeciwieństwie do obsługi.NET Standardprzez EO.Pdf.

Migracja ACM: Zespoły używające zaawansowanego modelu treści EO.Pdf (AcmRender, AcmText, AcmBlock) uważają, że podejście HTML/CSSIronPDFjest prostsze i łatwiejsze do utrzymania.

Mocne strony i kwestie do rozważenia

EO.PDF Mocne strony

  • Renderowanie Chromium: wysokiej jakości wynik zgodny ze standardami W3C
  • Sprawdzona biblioteka: Sprawdzona w środowiskach produkcyjnych
  • Pojedynczy krok konwersji: Bezpośrednie wyjście pliku przez ConvertHtml()

EO.PDF Uwagi

  • Ogromny rozmiar pakietu: 126 MB zajmowanego miejsca po wdrożeniu
  • Dziedzictwo IE: Problemy z kompatybilnością wynikające z migracji
  • Konfiguracja statyczna: Problemy z bezpieczeństwem wątków w aplikacjach wielodostępnych
  • Skupienie na systemie Windows: ograniczona obsługa systemów Linux/macOS
  • Cena: 799 USD za licencję programisty
  • Ograniczona dokumentacja: mniej samouczków i przykładów

Atuty IronPDF

  • Zoptymalizowany rozmiar: ~50 MB (o 50% mniejszy)
  • Prawdziwa wielopłatformowość: Windows, Linux, macOS, Docker
  • Konfiguracja bezpieczna dla wątków: opcje renderera oparte na instancjach
  • Nowoczesne API: spójne, intuicyjne nazwy metod
  • Aktywny rozwój: regularne aktualizacje i poprawki bezpieczeństwa
  • Kompleksowe zasoby: obszerne samouczki i dokumentacja

Uwagi dotyczące IronPDF

  • Dwuetapowe zapisanie: Renderowanie zwraca PdfDocument, potem wywołanie SaveAs()
  • Różnice w jednostkach miary: Marginesy podane są w milimetrach (w przeciwieństwie do cali w pliku EO.PDF)

Wnioski

EO.Pdf iIronPDFzapewniają programistom .NET generowanie plików PDF w oparciu o Chromium, ale reprezentują różne podejścia architektoniczne. EO.PDF oferuje sprawdzoną funkcjonalność, ale ma rozmiar pakietu wynoszący 126 MB, bagaż migracyjny związany ze starszą wersją przeglądarki Internet Explorer oraz statyczną konfigurację niezabezpieczoną przed wątkami.

IronPDF stanowi nowoczesną alternatywę dzięki zoptymalizowanemu pakietowi, prawdziwej obsłudze wielu platform oraz konfiguracji opartej na instancjach i bezpiecznej dla wątków. Dla zespołów wymagających wydajności wdrażania, bezpieczeństwa pracy równoległej lub obsługi wielu platform,IronPDFspełnia te konkretne wymagania.

Jako że organizacje planują na .NET 10, C# 14 i rozwój aplikacji do 2026 roku, wybór zależy od konkretnych priorytetów. Zespoły, które już korzystają z implementacji EO.PDF w jednowątkowych środowiskach Windows, mogą nadal czerpać z tego korzyści. W przypadku nowoczesnych aplikacji wielodostępnych, wdrożeń kontenerowych lub wymagań wielopłatformowych,IronPDFzapewnia bardziej odpowiednie podejście.

Zacznij testować IronPDF, korzystając z bezpłatnej wersji próbnej, i zapoznaj się z obszerną dokumentacją, aby ocenić, czy rozwiązanie to spełnia Twoje konkretne wymagania.