XFINIUM.PDF vs IronPDF: Przewodnik porównania technicznego
Kiedy programiści .NET oceniają biblioteki PDF do generowania i przetwarzania dokumentów, XFINIUM.PDF jawi się jako opcja wielopłatformowa z kompleksowymi narzędziami PDF niskiego poziomu. Jednak jego model programowania grafiki oparty na współrzędnych znacznie różni się od podejść skoncentrowanych na HTML. W niniejszym porównaniu technicznym przeanalizowano XFINIUM.PDF oraz IronPDF, aby pomóc architektom i programistom zrozumieć podstawowe różnice w filozofii generowania plików PDF, projektowaniu interfejsów API oraz obsłudze nowoczesnych treści internetowych.
Zrozumienie XFINIUM.PDF
XFINIUM.PDF to komercyjna, wielopłatformowa biblioteka PDF opracowana w całości w języku C#, przeznaczona zarówno dla początkujących, jak i doświadczonych programistów zajmujących się formatem PDF. Biblioteka oferuje szeroki wachlarz funkcji, w tym generowanie plików PDF, wypełnianie formularzy, tworzenie portfolio plików PDF, edycję treści oraz konwersję wielostronicowych plików TIFF.
XFINIUM.PDF jest dostępny w dwóch wersjach: Generator Edition do tworzenia i edycji plików PDF oraz Viewer Edition, która oferuje dodatkowo funkcje renderowania i wyświetlania. Biblioteka zapewnia kompleksowe narzędzia do obróbki plików PDF na różnych platformach.
Jednak XFINIUM.PDF działa w oparciu o zasadniczo inny paradygmat niż biblioteki PDF zorientowane na sieć:
- API oparte na współrzędnych: Wymaga ręcznego pozycjonowania za pomocą współrzędnych pikselowych, takich jak
DrawString("text", font, brush, 50, 100) - Brak natywnej obsługi HTML: nie można konwertować HTML/CSS do formatu PDF — opiera się na nisko poziomowych elementach rysunkowych
- Ręczne zarządzanie czcionkami: Wymagane jest jawne tworzenie obiektów czcionek i zarządzanie nimi
- Brak stylów CSS: Brak obsługi nowoczesnych stylów internetowych — kolory, czcionki i układy należy wprowadzać ręcznie
- Brak renderowania JavaScript: Tylko treści statyczne — nie można renderować dynamicznych treści internetowych
- Złożony układ tekstu: Wymagane ręczne pomiary tekstu i obliczenia zawijania
Model programowania graficznego
XFINIUM.PDF zmusza programistów do myślenia raczej jak programiści graficzni, a nie jak projektanci dokumentów:
// XFINIUM.PDF: Position every element manually
page.Graphics.DrawString("Invoice", titleFont, titleBrush, new XPoint(50, 50));
page.Graphics.DrawString("Customer:", labelFont, brush, new XPoint(50, 80));
page.Graphics.DrawString(customer.Name, valueFont, brush, new XPoint(120, 80));
page.Graphics.DrawLine(pen, 50, 100, 550, 100);
// ... hundreds of lines for a simple document
// XFINIUM.PDF: Position every element manually
page.Graphics.DrawString("Invoice", titleFont, titleBrush, new XPoint(50, 50));
page.Graphics.DrawString("Customer:", labelFont, brush, new XPoint(50, 80));
page.Graphics.DrawString(customer.Name, valueFont, brush, new XPoint(120, 80));
page.Graphics.DrawLine(pen, 50, 100, 550, 100);
// ... hundreds of lines for a simple document
' XFINIUM.PDF: Position every element manually
page.Graphics.DrawString("Invoice", titleFont, titleBrush, New XPoint(50, 50))
page.Graphics.DrawString("Customer:", labelFont, brush, New XPoint(50, 80))
page.Graphics.DrawString(customer.Name, valueFont, brush, New XPoint(120, 80))
page.Graphics.DrawLine(pen, 50, 100, 550, 100)
' ... hundreds of lines for a simple document
Takie podejście staje się wyzwaniem przy utrzymaniu strony w miarę zmian wymagań, ponieważ po przesunięciu treści konieczne jest ponowne obliczenie pozycji każdego elementu.
Zrozumienie IronPDF
IronPDF stosuje podejście zorientowane na internet do generowania plików PDF, wykorzystując silnik renderujący Chromium do konwersji HTML, CSS iJavaScriptbezpośrednio na dokumenty PDF. Zamiast rysowania opartego na współrzędnych, IronPDF umożliwia programistom korzystanie ze znanych technologii internetowych do tworzenia dokumentów.
Kluczowe cechy obejmują:
- Projekt oparty na HTML/CSS: Należy stosować standardowe technologie internetowe do tworzenia układu dokumentu
- Silnik renderujący Chromium: Pełna obsługa CSS3 iJavaScriptdzięki nowoczesnej technologii przeglądarek
- Automatyczny układ: brak ręcznych obliczeń współrzędnych — treść układa się naturalnie
- Nowoczesne standardy internetowe: CSS Grid, Flexbox, czcionki internetowe iJavaScriptES2024
- Konwersja adresów URL do formatu PDF: renderowanie aktywnych stron internetowych bezpośrednio do formatu PDF
- Duża społeczność: obszerna dokumentacja, samouczki i zasoby wsparcia
Porównanie funkcji
Poniższa tabela przedstawia podstawowe różnice między XFINIUM.PDF a IronPDF:
| Funkcja | XFINIUM.PDF | IronPDF |
|---|---|---|
| HTML do PDF | Ograniczona obsługa HTML, skupia się na programowym tworzeniu plików PDF | Pełna konwersja HTML do PDF z kompleksową obsługą |
| Społeczność i wsparcie | Mniejsza społeczność, mniej dostępnych zasobów online | Duża społeczność z obszerną dokumentacją i samouczkami |
| Licencja | Reklama z licencjonowaniem dla programistów | Komercjalne |
| Obsługa wielu platform | Silne możliwości wielopłatformowe | Obsługuje również operacje międzyplatformowe |
| Funkcje specjalistyczne | Kompleksowe narzędzia do edycji plików PDF | Zaawansowane renderowanie HTML wraz z funkcjami obsługi plików PDF |
Szczegółowe porównanie funkcji
| Funkcja | XFINIUM.PDF | IronPDF |
|---|---|---|
| Tworzenie treści | ||
| HTML do PDF | Ograniczone (PdfHtmlTextElement) | Pełne renderowanie Chromium |
| URL do pliku PDF | Nie | Tak |
| Obsługa CSS | Nie | Pełny CSS3 |
| JavaScript | Nie | Pełna wersja ES2024 |
| Flexbox/Grid | Nie | Tak |
| Czcionki internetowe | Nie | Tak |
| Obsługa SVG | Ograniczone | Pełna |
| Układ | ||
| Automatyczny układ | Nie | Tak |
| Automatyczne podziały stron | Nie | Tak |
| Ręczne pozycjonowanie | Wymagane | Opcjonalnie (pozycjonowanie CSS) |
| Tabele | Rysowanie ręczne | HTML <table> |
| Operacje na plikach PDF | ||
| Łączenie plików PDF | Tak | Tak |
| Podział plików PDF | Tak | Tak |
| Znaki wodne | Rysowanie ręczne | Wbudowane |
| Nagłówki/stopki | Podręcznik każdej strony | Automatyczne |
| Rozwój | ||
| Krzywa uczenia się | Wysoki (układ współrzędnych) | Niski (HTML/CSS) |
| Rozbudowanie kodu | Bardzo wysoką | Low |
| Konserwacja | Trudne | Łatwe |
| Wielopłatformowe | Tak | Tak |
Różnice w architekturze API
Różnice architektoniczne między XFINIUM.PDF aIronPDFodzwierciedlają zasadniczo odmienne podejścia do generowania plików PDF.
Wzorzec dokumentu przepływu XFINIUM.PDF
XFINIUM.PDF używa wieloetapowego procesu z obiektami PdfFixedDocument, PdfFlowDocument, i PdfFlowContent:
// NuGet: Install-Package Xfinium.Pdf
using Xfinium.Pdf;
using Xfinium.Pdf.Actions;
using Xfinium.Pdf.FlowDocument;
using System.IO;
class Program
{
static void Main()
{
PdfFixedDocument document = new PdfFixedDocument();
PdfFlowDocument flowDocument = new PdfFlowDocument();
string html = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>";
PdfFlowContent content = new PdfFlowContent();
content.AppendHtml(html);
flowDocument.AddContent(content);
flowDocument.RenderDocument(document);
document.Save("output.pdf");
}
}
// NuGet: Install-Package Xfinium.Pdf
using Xfinium.Pdf;
using Xfinium.Pdf.Actions;
using Xfinium.Pdf.FlowDocument;
using System.IO;
class Program
{
static void Main()
{
PdfFixedDocument document = new PdfFixedDocument();
PdfFlowDocument flowDocument = new PdfFlowDocument();
string html = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>";
PdfFlowContent content = new PdfFlowContent();
content.AppendHtml(html);
flowDocument.AddContent(content);
flowDocument.RenderDocument(document);
document.Save("output.pdf");
}
}
Imports Xfinium.Pdf
Imports Xfinium.Pdf.Actions
Imports Xfinium.Pdf.FlowDocument
Imports System.IO
Module Program
Sub Main()
Dim document As New PdfFixedDocument()
Dim flowDocument As New PdfFlowDocument()
Dim html As String = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>"
Dim content As New PdfFlowContent()
content.AppendHtml(html)
flowDocument.AddContent(content)
flowDocument.RenderDocument(document)
document.Save("output.pdf")
End Sub
End Module
Ten wzorzec wymaga utworzenia wielu obiektów dokumentów, dodania treści do kontenera przepływu, renderowania do stałego dokumentu, a następnie zapisania. Wsparcie HTML przy użyciu AppendHtml jest ograniczone w porównaniu do pełnego renderowania przeglądarkowego.
Uproszczony wzór IronPDF
IronPDF zapewnia bezpośrednią konwersję HTML do PDF za pomocą klasy ChromePdfRenderer:
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
Imports IronPdf
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim html As String = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
End Sub
End Class
Klasa ChromePdfRenderer wykorzystuje silnik renderujący Chromium do przetwarzania kodu HTML z pełną obsługą CSS3 i JavaScript. Aby uzyskać wyczerpujące wskazówki dotyczące konwersji HTML, zapoznaj się z samouczkiem dotyczącym konwersji HTML do PDF.
Operacje łączenia plików PDF
Połączenie wielu dokumentów PDF ujawnia znaczne różnice w złożoności API między bibliotekami.
XFINIUM.PDF Pętla stron podręcznika PDF
XFINIUM.PDF wymaga otwierania strumieni plików, iteracji przez strony oraz ręcznego dodawania każdej strony do dokumentu wyjściowego:
// NuGet: Install-Package Xfinium.Pdf
using Xfinium.Pdf;
using System.IO;
class Program
{
static void Main()
{
PdfFixedDocument output = new PdfFixedDocument();
FileStream file1 = File.OpenRead("document1.pdf");
PdfFixedDocument pdf1 = new PdfFixedDocument(file1);
FileStream file2 = File.OpenRead("document2.pdf");
PdfFixedDocument pdf2 = new PdfFixedDocument(file2);
for (int i = 0; i < pdf1.Pages.Count; i++)
{
output.Pages.Add(pdf1.Pages[i]);
}
for (int i = 0; i < pdf2.Pages.Count; i++)
{
output.Pages.Add(pdf2.Pages[i]);
}
output.Save("merged.pdf");
file1.Close();
file2.Close();
}
}
// NuGet: Install-Package Xfinium.Pdf
using Xfinium.Pdf;
using System.IO;
class Program
{
static void Main()
{
PdfFixedDocument output = new PdfFixedDocument();
FileStream file1 = File.OpenRead("document1.pdf");
PdfFixedDocument pdf1 = new PdfFixedDocument(file1);
FileStream file2 = File.OpenRead("document2.pdf");
PdfFixedDocument pdf2 = new PdfFixedDocument(file2);
for (int i = 0; i < pdf1.Pages.Count; i++)
{
output.Pages.Add(pdf1.Pages[i]);
}
for (int i = 0; i < pdf2.Pages.Count; i++)
{
output.Pages.Add(pdf2.Pages[i]);
}
output.Save("merged.pdf");
file1.Close();
file2.Close();
}
}
Imports Xfinium.Pdf
Imports System.IO
Module Program
Sub Main()
Dim output As New PdfFixedDocument()
Dim file1 As FileStream = File.OpenRead("document1.pdf")
Dim pdf1 As New PdfFixedDocument(file1)
Dim file2 As FileStream = File.OpenRead("document2.pdf")
Dim pdf2 As New PdfFixedDocument(file2)
For i As Integer = 0 To pdf1.Pages.Count - 1
output.Pages.Add(pdf1.Pages(i))
Next
For i As Integer = 0 To pdf2.Pages.Count - 1
output.Pages.Add(pdf2.Pages(i))
Next
output.Save("merged.pdf")
file1.Close()
file2.Close()
End Sub
End Module
Takie podejście wymaga wyraźnego zarządzania strumieniem, ręcznego przechodzenia przez strony każdego dokumentu oraz starannego czyszczenia uchwytów plików.
Metoda statycznego scałania IronPDF
IronPDF udostępnia statyczną metodę Merge, która wewnętrznie obsługuje całą złożoność:
// NuGet: Install-Package IronPdf
using IronPdf;
using System.Collections.Generic;
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");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System.Collections.Generic;
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");
}
}
Imports IronPdf
Imports System.Collections.Generic
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")
End Sub
End Class
Metoda PdfDocument.Merge eliminuje ręczne iterowanie stron i zarządzanie strumieniami, co znacznie zmniejsza złożoność kodu.
Tworzenie dokumentów zawierających tekst i obrazy
Tworzenie dokumentów o mieszanej zawartości pokazuje różnicę paradygmatyczną między grafiką opartą na współrzędnych a projektowaniem opartym na HTML.
Podejście graficzne XFINIUM.PDF
XFINIUM.PDF wymaga tworzenia obiektów czcionek, obiektów pędzli, ładowania obrazów do określonych klas obrazów oraz rysowania każdego elementu w dokładnych współrzędnych:
// NuGet: Install-Package Xfinium.Pdf
using Xfinium.Pdf;
using Xfinium.Pdf.Graphics;
using Xfinium.Pdf.Core;
using System.IO;
class Program
{
static void Main()
{
PdfFixedDocument document = new PdfFixedDocument();
PdfPage page = document.Pages.Add();
PdfStandardFont font = new PdfStandardFont(PdfStandardFontFace.Helvetica, 24);
PdfBrush brush = new PdfBrush(PdfRgbColor.Black);
page.Graphics.DrawString("Sample PDF Document", font, brush, 50, 50);
FileStream imageStream = File.OpenRead("image.jpg");
PdfJpegImage image = new PdfJpegImage(imageStream);
page.Graphics.DrawImage(image, 50, 100, 200, 150);
imageStream.Close();
document.Save("output.pdf");
}
}
// NuGet: Install-Package Xfinium.Pdf
using Xfinium.Pdf;
using Xfinium.Pdf.Graphics;
using Xfinium.Pdf.Core;
using System.IO;
class Program
{
static void Main()
{
PdfFixedDocument document = new PdfFixedDocument();
PdfPage page = document.Pages.Add();
PdfStandardFont font = new PdfStandardFont(PdfStandardFontFace.Helvetica, 24);
PdfBrush brush = new PdfBrush(PdfRgbColor.Black);
page.Graphics.DrawString("Sample PDF Document", font, brush, 50, 50);
FileStream imageStream = File.OpenRead("image.jpg");
PdfJpegImage image = new PdfJpegImage(imageStream);
page.Graphics.DrawImage(image, 50, 100, 200, 150);
imageStream.Close();
document.Save("output.pdf");
}
}
Imports Xfinium.Pdf
Imports Xfinium.Pdf.Graphics
Imports Xfinium.Pdf.Core
Imports System.IO
Class Program
Shared Sub Main()
Dim document As New PdfFixedDocument()
Dim page As PdfPage = document.Pages.Add()
Dim font As New PdfStandardFont(PdfStandardFontFace.Helvetica, 24)
Dim brush As New PdfBrush(PdfRgbColor.Black)
page.Graphics.DrawString("Sample PDF Document", font, brush, 50, 50)
Dim imageStream As FileStream = File.OpenRead("image.jpg")
Dim image As New PdfJpegImage(imageStream)
page.Graphics.DrawImage(image, 50, 100, 200, 150)
imageStream.Close()
document.Save("output.pdf")
End Sub
End Class
To wymaga zarządzania obiektami PdfStandardFont, PdfBrush, PdfRgbColor, i PdfJpegImage, z wyraźnym pozycjonowaniem współrzędnych zarówno dla tekstu, jak i obrazów.
PodejścieIronPDFdo HTML
IronPDF wykorzystuje standardowy kod HTML z osadzonymi obrazami:
// NuGet: Install-Package IronPdf
using IronPdf;
using System.IO;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string imageBase64 = Convert.ToBase64String(File.ReadAllBytes("image.jpg"));
string html = $@"
<html>
<body>
<h1>Sample PDF Document</h1>
<img src='data:image/jpeg;base64,{imageBase64}' width='200' height='150' />
</body>
</html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System.IO;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string imageBase64 = Convert.ToBase64String(File.ReadAllBytes("image.jpg"));
string html = $@"
<html>
<body>
<h1>Sample PDF Document</h1>
<img src='data:image/jpeg;base64,{imageBase64}' width='200' height='150' />
</body>
</html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
Imports IronPdf
Imports System.IO
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim imageBase64 As String = Convert.ToBase64String(File.ReadAllBytes("image.jpg"))
Dim html As String = $"
<html>
<body>
<h1>Sample PDF Document</h1>
<img src='data:image/jpeg;base64,{imageBase64}' width='200' height='150' />
</body>
</html>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
End Sub
End Class
HTML automatycznie obsługuje układ — brak obliczeń współrzędnych, brak zarządzania obiektami czcionek, a obrazy osadzają się naturalnie, używając standardowych tagów <img> lub kodowania base64.
Przewodnik po mapowaniu API
Zespoły rozważające przejście z XFINIUM.PDF naIronPDFuznają to zestawienie za pomocne w zrozumieniuiuiuiuiu równoważności pojęć:
| XFINIUM.PDF | IronPDF |
|---|---|
PdfFixedDocument |
ChromePdfRenderer |
PdfPage |
Automatyczne |
page.Graphics.DrawString() |
Elementy tekstowe HTML |
page.Graphics.DrawImage() |
<img> tag |
page.Graphics.DrawLine() |
CSS border lub <hr> |
page.Graphics.DrawRectangle() |
CSS border on <div> |
PdfUnicodeTrueTypeFont |
CSS font-family |
PdfRgbColor |
CSS color |
PdfBrush |
Właściwości CSS |
PdfPen |
CSS border |
PdfHtmlTextElement |
RenderHtmlAsPdf() |
document.Save(stream) |
pdf.SaveAs() lub pdf.BinaryData |
PdfStringAppearanceOptions |
Stylizacja CSS |
PdfStringLayoutOptions |
Układ CSS |
Kiedy zespoły rozważają przejście z XFINIUM.PDF na IronPDF
Istnieje kilka scenariuszy, w których zespoły programistów często rozważająIronPDFjako alternatywę dla XFINIUM.PDF:
Wymagania dotyczące nowoczesnych treści internetowych
Zespoły tworzące aplikacje generujące pliki PDF na podstawie szablonów internetowych, pulpitów nawigacyjnych lub raportów uważają podejście oparte na współrzędnych stosowane w XFINIUM.PDF za ograniczające. Silnik Chromium firmyIronPDFrenderuje nowoczesne treści oparte na CSS Grid, Flexbox i JavaScript, których XFINIUM.PDF nie obsługuje.
Konserwacja i złożoność kodu
API oparte na współrzędnych w XFINIUM.PDF generuje rozbudowany kod, który staje się trudny do utrzymania w miarę ewolucji układów dokumentów. Prosty dokument faktury może wymagać setek linii kodu pozycjonującego w XFINIUM.PDF w porównaniu z kilkudziesięcioma liniami HTML/CSS w IronPDF.
Funkcja konwersji adresów URL do formatu PDF
XFINIUM.PDF nie może renderować aktywnych stron internetowych do formatu PDF — ta funkcja wymaga zewnętrznych bibliotek do analizowania kodu HTML.IronPDFzapewnia natywną konwersję adresów URL do formatu PDF z pełnym wykonaniem koduJavaScripti obsługą treści dynamicznych.
Znajomość środowiska programistycznego
Zespoły posiadające duże umiejętności w zakresie tworzenia stron internetowych uważają, że nauka generowania plików PDF na podstawie współrzędnych jest trudna. HTML i CSS to powszechnie znane technologie, dzięki czemu podejścieIronPDFjest bardziej przystępne dla programistów bez specjalistycznej wiedzy na temat plików PDF.
Automatyczny układ i podziały stron
XFINIUM.PDF wymaga ręcznego śledzenia pozycji Y oraz jawnego tworzenia stron, gdy zawartość wykracza poza granice strony.IronPDFautomatycznie obsługuje podziały stron w oparciu o reguły CSS i przepływ treści.
Typowe kwestie związane z migracją
Zespoły przechodzące z XFINIUM.PDF naIronPDFpowinny wziąć pod uwagę następujące różnice techniczne:
Układ oparty na współrzędnych do układu płynnego
XFINIUM.PDF wymaga dokładnych współrzędnych X,Y dla każdego elementu.IronPDFdomyślnie wykorzystuje układ HTML typu flow. W przypadkach wymagających pozycjonowania absolutnego CSS zapewnia taką możliwość:
.positioned-element {
position: absolute;
top: 100px;
left: 50px;
}
Obiekt czcionki do CSS Font-Family
XFINIUM.PDF tworzy obiekty PdfUnicodeTrueTypeFont jawnie.IronPDFwykorzystuje właściwość CSS font-family z automatyczną obsługą czcionek:
<style>
body { font-family: Arial, sans-serif; }
h1 { font-family: 'Times New Roman', serif; font-size: 24px; }
</style>
<style>
body { font-family: Arial, sans-serif; }
h1 { font-family: 'Times New Roman', serif; font-size: 24px; }
</style>
Obiekty kolorów do kolorów CSS
XFINIUM.PDF wymaga obiektów PdfRgbColor i PdfBrush.IronPDFużywa standardowych kolorów CSS:
.header { color: navy; background-color: #f5f5f5; }
.warning { color: rgb(255, 0, 0); }
.info { color: rgba(0, 0, 255, 0.8); }
Ręczne i automatyczne podziały stron
XFINIUM.PDF wymaga śledzenia pozycji Y i ręcznego tworzenia nowych stron.IronPDFzapewnia automatyczne podziały stron z kontrolą CSS:
.section { page-break-after: always; }
.keep-together { page-break-inside: avoid; }
Dodatkowe możliwości IronPDF
Oprócz podstawowych punktów porównawczych,IronPDFoferuje funkcje manipulacji dokumentami, które uzupełniają renderowanie HTML:
- Nagłówki i stopki: Automatyczne nagłówki i stopki oparte na HTML z numeracją stron
- Podpisy cyfrowe: stosowanie podpisów kryptograficznych w celu potwierdzenia autentyczności dokumentów
- Znak wodny: Wbudowana obsługa znaków wodnych bez konieczności ręcznego rysowania
- Zgodność z PDF/A: Generowanie dokumentów zgodnych ze standardami archiwizacji
- Wypełnianie formularzy: programowe wypełnianie pól formularzy PDF
- Ochrona hasłem: Szyfruj pliki PDF za pomocą haseł użytkownika i właściciela
Zgodność z platformą .NET i gotowość na przyszłość
Obie biblioteki obsługują wielopłatformowe programowanie w środowisku .NET.IronPDFjest aktywnie rozwijany i regularnie aktualizowany, co zapewnia kompatybilność z .NET 8, .NET 9 oraz przyszłymi wersjami, w tym .NET 10, którego premiera przewidziana jest na 2026 rok. Podejście biblioteki oparte na HTML/CSS jest zgodne z nowoczesnymi praktykami tworzenia stron internetowych i wykorzystuje umiejętności, które programiści .NET już posiadają.
Wnioski
XFINIUM.PDF iIronPDFreprezentują zasadniczo różne podejścia do generowania plików PDF w środowisku .NET. Interfejs API grafiki oparty na współrzędnych w XFINIUM.PDF zapewnia kontrolę na niskim poziomie, ale wymaga znacznej ilości kodu do tworzenia układu dokumentu — każdy element wymaga wyraźnego pozycjonowania, obiektów czcionek i zarządzania kolorami. Zastosowanie tego podejścia staje się coraz trudniejsze wraz ze wzrostem złożoności dokumentu.
PodejścieIronPDFoparte na HTML/CSS wykorzystuje silnik renderujący Chromium, traktując generowanie plików PDF jako renderowanie stron internetowych. Programiści korzystają ze znanych im języków HTML, CSS iJavaScriptzamiast uczyć się graficznych interfejsów API opartych na współrzędnych. Automatyczny układ, podziały stron oraz obsługa nowoczesnych standardów internetowych (CSS Grid, Flexbox, ES2024 JavaScript) znacznie zmniejszają złożoność kodu.
Dla zespołów tworzących aplikacje generujące raporty internetowe, pulpity nawigacyjne lub dokumenty dynamiczne podejścieIronPDFw naturalny sposób wpisuje się w nowoczesne praktyki programistyczne. Dla zespołów wymagających precyzyjnej kontroli nad każdym elementem dokumentu i gotowych zainwestować w model programowania oparty na współrzędnych, API graficzne XFINIUM.PDF zapewnia taką możliwość.
Wybór zależy ostatecznie od wymagań Twojego zespołu: jeśli Twoje pliki PDF pochodzą z treści internetowych lub preferujesz HTML/CSS do projektowania dokumentów, podejścieIronPDFoferuje znaczące korzyści w zakresie wydajności. Jeśli tworzysz wysoce specjalistyczne treści PDF z precyzyjnymi wymaganiami dotyczącymi pozycjonowania, a Twój zespół posiada doświadczenie w programowaniu graficznym, niskopoziomowy interfejs API XFINIUM.PDF może zaspokoić te potrzeby.
Aby uzyskać dodatkowe wskazówki dotyczące wdrażania, zapoznaj się z dokumentacją IronPDF oraz samouczkami obejmującymi konkretne przypadki użycia i zaawansowane funkcje.