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 jego większy ślad wdrożeniowy, problemy z migracją starszego Internet Explorera oraz statyczne podejście do globalnej konfiguracji skłaniają wiele zespołów do rozważenia alternatyw.IronPDF oferuje udoskonaloną implementację Chromium z zoptymalizowaną pakowaniem, konfiguracją opartą na instancjach, bezpieczną dla wątków oraz prawdziwym wsparciem dla 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 $2,998 za licencję na programistę, oferująca renderowanie oparte na Chromium dla generowania wysokiej jakości plików PDF. 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 biblioteki na Chromium wprowadziło problemy z kompatybilnością ze względu na starszy bagaż z ery Internet Explorera. Zawiera własny silnik Chromium, co skutkuje większym śladem wdrożeniowym, zwiększając rozmiar obrazów Docker, spowalniając procesy CI/CD i podnosząc 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. Konwerter używa statycznej HtmlToPdf.Options do konfiguracji, co stwarza problemy z bezpieczeństwem wątków w aplikacjach webowych z wieloma dzierżawcami.
Zrozumienie IronPDF
IronPDF to biblioteka PDF dla .NET zaprojektowana dla nowoczesnych środowisk .NET z zoptymalizowanym podejściem do pakowania Chromium, co skutkuje mniejszym śladem wdrożeniowym. 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 instancji przez obiekty ChromePdfRenderer, zapewniając bezpieczeństwo wątków 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 | Większy ślad wdrożeniowy | Zoptymalizowane pakowanie |
| 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 | $2,998/developer | 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ę. Statyczna HtmlToPdf.Options biblioteki wpływa na wszystkie konwersje globalnie, tworząc warunki wyścigu w aplikacjach wielowątkowych. Podejście oparte na instancjach stosowane przez IronPDF zapewnia 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 ClassIronPDF:
// 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 ClassBiblioteka używa metody statycznej HtmlToPdf.ConvertHtml(), która zapisuje bezpośrednio na ścieżce pliku.IronPDF używa podejścia dwustopniowego: 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 ModuleIronPDF:
// 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 ClassObie biblioteki oferują możliwość zamiany URL na PDF, przy czym EO.Pdf używa statycznej ConvertUrl(), a IronPDF instancji 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 ClassIronPDF:
// 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 ModuleTo rozwiązanie ładuje dokumenty przez konstruktory (new PdfDocument(path)) i używa Append() do dodawania dokumentów do pustego kontenera.IronPDF używa statycznych metod fabrycznych (PdfDocument.FromFile()) oraz statycznej metody PdfDocument.Merge(), która akceptuje kolekcję i zwraca połączony 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 ClassIronPDF:
// 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 ClassKonwerter używa HtmlToPdfOptions z OutputArea określonym jako RectangleF w calach.IronPDF uż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) następnie SaveAs() |
HtmlToPdf.ConvertUrl(url, path) | renderer.RenderUrlAsPdf(url) następnie 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 | Odpowiednik IronPDF |
|---|---|
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 | Tak | Tak |
| URL do pliku PDF | Tak | Tak |
| Łączenie plików PDF | Tak | Tak |
| Manipulacja stronami | Tak | Tak |
| Nagłówki/stopki | Tak | Tak (oparty na HTML) |
| Bezpieczeństwo/szyfrowanie | Tak | Tak |
| Pola formularzy | Tak | Tak |
| Znaki wodne | Tak | Tak |
| Renderowanie ACM | Tak | HTML/CSS (bez ACM) |
| Konfiguracja bezpieczna dla wątków | Tak (izolowany na każdy wątek) | Tak (instancja) |
| 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")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 przez IronPDF eliminuje 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")Każda instancja ChromePdfRenderer utrzymuje swoją 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 na IronPDF z kilku powodów:
Optymalizacja rozmiaru pakietu: Większy ślad wdrożeniowy EO.Pdf powiększa obrazy Docker, spowalnia procesy CI/CD i zwiększa koszty infrastruktury. Zoptymalizowane pakowanie IronPDF zapewnia poprawę efektywności wdrożeń.
Wymagania dotyczące bezpieczeństwa wątków: Aplikacje webowe z wieloma dzierżawcami wymagają izolowanej konfiguracji na żądanie. Statyczna HtmlToPdf.Options biblioteki tworzy warunki wyścigów, które podejście IronPDF oparte na instancjach eliminuje.
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.IronPDF zapewnia prawdziwą obsługę wielu platform z zachowaniem spójnego działania.
Unikanie starszego bagażu: Jego migracja z Internet Explorera do Chromium wprowadziła problemy z kompatybilnością. Przejrzysta, nowoczesna baza kodu IronPDF pozwala uniknąć tego długu technicznego.
Wsparcie dla nowoczesnego .NET: Aplikacje przeznaczone dla .NET 6/7/8/9+ korzystają z natywnej obsługi IronPDF w przeciwieństwie do obsługi.NET Standardprzez EO.Pdf.
Migracja ACM: Zespoły używające Advanced Content Model EO.Pdf (AcmRender, AcmText, AcmBlock) uznają podejście HTML/CSS IronPDF za 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
- Konwersja jednowarstwowa: Bezpośrednie wyjście pliku poprzez
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
- Poziom cenowy: $2,998 za licencję na programistę
- 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
- Dwustopniowe zapisanie: Renderowanie zwraca
PdfDocument, następnie wywołanieSaveAs() - Różnice w jednostkach miary: Marginesy podane są w milimetrach (w przeciwieństwie do cali w pliku EO.PDF)
Wnioski
EO.Pdf i IronPDF zapewniają 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,IronPDF speł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,IronPDF zapewnia 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.
