PORóWNANIE

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

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

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

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

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

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

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

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

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.