PORóWNANIE

GemBox PDF a IronPDF: Przewodnik po porównaniu technicznym

Kiedy programiści .NET oceniają rozwiązania do generowania plików PDF,GemBox PDFwyróżnia się jako narzędzie przeznaczone specjalnie do zadań związanych z plikami PDF, takich jak odczyt, zapis, scałanie i dzielenie. Jednak jego układ oparty na współrzędnych, ograniczenie do 2 stron w wersji darmowej oraz ograniczone przekształcanie HTML na PDF sprawiają, że wiele zespołów szuka alternatyw.IronPDFoferuje nowoczesne podejście wykorzystujące HTML/CSS do układu z silnikiem renderującym Chromium, eliminując potrzebę obliczeń współrzędnych i ograniczeń stron.

W niniejszym porównaniu przeanalizowano obie biblioteki pod kątem istotnych aspektów technicznych, aby pomóc programistom i architektom w podjęciu świadomej decyzji dotyczącej ich potrzeb w zakresie obsługi plików PDF w środowisku .NET.

Zrozumienie GemBox PDF

GemBox PDF to komercyjny komponent .NET przeznaczony do obsługi plików PDF w aplikacjach napisanych w języku C#. Biblioteka pozwala programistom na wykonywanie operacji, takich jak odczyt, zapis, scałanie i dzielenie dokumentów PDF bez konieczności instalowania oprogramowania innych firm, takiego jak Adobe Acrobat.

GemBox PDF wykorzystuje PdfDocument jako swoją główną klasę dokumentu, z rejestracją licencji poprzez ComponentInfo.SetLicense() przed wykonaniem jakiejkolwiek operacji. Aby dodać zawartość tekstową, biblioteka używa obiektów PdfFormattedText z właściwościami takimi jak Text i FontSize, umiejscowione przy użyciu współrzędnych PdfPoint i renderowane za pomocą page.Content.DrawText(). Ładowanie dokumentu używa PdfDocument.Load() a zapis używa document.Save().

Zauważalną cechą jest ograniczenie do 2 stron w wersji darmowej. Dokumenty przekraczające 2 strony nie będą przetwarzane bez licencji, co czyni wersję darmową niepraktyczną dla dłuższych dokumentów biznesowych. Biblioteka wykorzystuje układ oparty na współrzędnych, co wymaga od programistów obliczenia dokładnych pozycji X/Y dla każdego elementu tekstowego, obrazu i kształtu.

Zrozumienie IronPDF

IronPDF to biblioteka .NET do obsługi plików PDF, która wykorzystuje silnik renderujący Chromium do konwersji HTML na PDF, umożliwiając programistom stosowanie znanego im HTML/CSS do tworzenia układu dokumentu zamiast wykonywania obliczeń współrzędnych. Biblioteka koncentruje się na funkcjonalnościach specyficznych dla formatu PDF z wykorzystaniem nowoczesnych wzorców .NET.

IronPDF używa ChromePdfRenderer jako swojej głównej klasy renderującej, z RenderHtmlAsPdf() akceptującym ciągi HTML i zwracającym obiekty PdfDocument. Aby dodać tekst do istniejących dokumentów, TextStamper zapewnia właściwości takie jak Text, FontSize, HorizontalOffset i VerticalOffset, stosowane poprzez ApplyStamp(). Ładowanie dokumentu używa PdfDocument.FromFile() a zapis używa SaveAs().

Biblioteka nie ma ograniczeń co do liczby stron. Pełna obsługa CSS3 obejmuje Flexbox, układy siatki oraz wykonywanie kodu JavaScript, co pozwala programistom na wykorzystanie znanych im technologii internetowych do generowania plików PDF.

Porównanie podejść do architektury i układu

Podstawowa różnica między tymi bibliotekami .NET do obsługi plików PDF polega na filozofii ich układu.

AspektGemBox PDFIronPDF
Ograniczenia wersji darmowej2 stronyTylko znak wodny, bez ograniczeń dotyczących treści
HTML do PDFTak (dodane niedawno)Pełny silnik Chromium
Podejście do układu graficznegoRęczne, oparte na współrzędnychUkład HTML/CSS
TabeleObsługiwaneBez ograniczeń, użyj tabel HTML
Nowoczesny CSSTakFlexbox, Grid, CSS3
Obsługa JavaScriptTakPełne wykonywanie koduJavaScript
Zmiany w projekciePrzelicz współrzędneEdytuj HTML/CSS
Krzywa uczenia sięUkład współrzędnych PDFHTML/CSS (znajomość sieci)

Shift jest znacząca:

GemBox PDF:  "Narysuj tekst w pozycji (100, 700)"
IronPDF:     "Renderuj ten kod HTML ze stylami CSS"

GemBox PDF wymaga ręcznego obliczania każdej pozycji. Chcesz dostosować odstępy? Przelicz współrzędne. Chcesz zmienić rozmiar czcionki? Dostosuj wszystkie pozycje Y poniżej.IronPDFwykorzystuje układ płynny HTML/CSS, w którym treść układa się w sposób naturalny.

Porównanie kodu: typowe operacje na plikach PDF

Konwersja HTML do PDF

Najbardziej podstawowa operacja pokazuje zasadniczą różnicę w architekturze.

GemBox PDF:

// NuGet: Install-Package GemBox.Pdf
using GemBox.Pdf;
using GemBox.Pdf.Content;

class Program
{
    static void Main()
    {
        ComponentInfo.SetLicense("FREE-LIMITED-KEY");

        var document = PdfDocument.Load("input.html");
        document.Save("output.pdf");
    }
}
// NuGet: Install-Package GemBox.Pdf
using GemBox.Pdf;
using GemBox.Pdf.Content;

class Program
{
    static void Main()
    {
        ComponentInfo.SetLicense("FREE-LIMITED-KEY");

        var document = PdfDocument.Load("input.html");
        document.Save("output.pdf");
    }
}
Imports GemBox.Pdf
Imports GemBox.Pdf.Content

Module Program
    Sub Main()
        ComponentInfo.SetLicense("FREE-LIMITED-KEY")

        Dim document = PdfDocument.Load("input.html")
        document.Save("output.pdf")
    End Sub
End Module
$vbLabelText   $csharpLabel

IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
        pdf.SaveAs("output.pdf");
    }
}
Imports IronPdf

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>")
        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

GemBox PDF używa PdfDocument.Load() ze ścieżką do pliku, wymagając istniejącego pliku HTML do załadowania, a następnie Save() do wyjścia. W tym podejściu HTML traktowany jest jako plik do załadowania, a nie jako treść do renderowania.

IronPDF tworzy ChromePdfRenderer, wywołuje RenderHtmlAsPdf() z ciągiem HTML bezpośrednio i zapisuje za pomocą SaveAs(). Silnik Chromium renderuje kod HTML z pełną obsługą CSS3 i JavaScript, tak jak robi to przeglądarka.

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

Łączenie wielu plików PDF

Łączenie plików PDF ilustruje różnice w podejściu do manipulacji dokumentami.

GemBox PDF:

// NuGet: Install-Package GemBox.Pdf
using GemBox.Pdf;
using System.Linq;

class Program
{
    static void Main()
    {
        ComponentInfo.SetLicense("FREE-LIMITED-KEY");

        using (var document = new PdfDocument())
        {
            var source1 = PdfDocument.Load("document1.pdf");
            var source2 = PdfDocument.Load("document2.pdf");

            document.Pages.AddClone(source1.Pages);
            document.Pages.AddClone(source2.Pages);

            document.Save("merged.pdf");
        }
    }
}
// NuGet: Install-Package GemBox.Pdf
using GemBox.Pdf;
using System.Linq;

class Program
{
    static void Main()
    {
        ComponentInfo.SetLicense("FREE-LIMITED-KEY");

        using (var document = new PdfDocument())
        {
            var source1 = PdfDocument.Load("document1.pdf");
            var source2 = PdfDocument.Load("document2.pdf");

            document.Pages.AddClone(source1.Pages);
            document.Pages.AddClone(source2.Pages);

            document.Save("merged.pdf");
        }
    }
}
Imports GemBox.Pdf
Imports System.Linq

Module Program
    Sub Main()
        ComponentInfo.SetLicense("FREE-LIMITED-KEY")

        Using document As New PdfDocument()
            Dim source1 = PdfDocument.Load("document1.pdf")
            Dim source2 = PdfDocument.Load("document2.pdf")

            document.Pages.AddClone(source1.Pages)
            document.Pages.AddClone(source2.Pages)

            document.Save("merged.pdf")
        End Using
    End Sub
End Module
$vbLabelText   $csharpLabel

IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;

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;

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

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

GemBox PDF wymaga stworzenia nowego pustego PdfDocument, ładowania dokumentów źródłowych za pomocą PdfDocument.Load(), wywoływania document.Pages.AddClone() dla każdej strony źródła, a następnie zapisywania za pomocą document.Save(). Wzorzec wymaga zarządzania wieloma obiektami dokumentów oraz jawnego klonowania stron.

IronPDF używa PdfDocument.FromFile() do ładowania dokumentów źródłowych, wywołuje statyczną metodę PdfDocument.Merge() z dokumentami jako parametrami i zapisuje za pomocą SaveAs(). Metoda statycznego scałania zwraca bezpośrednio nowy, scalony dokument.

Dodawanie tekstu do plików PDF

Dodany tekst ilustruje podejście oparte na współrzędnych w porównaniu z podejściem opartym na stemplach.

GemBox PDF:

// NuGet: Install-Package GemBox.Pdf
using GemBox.Pdf;
using GemBox.Pdf.Content;

class Program
{
    static void Main()
    {
        ComponentInfo.SetLicense("FREE-LIMITED-KEY");

        using (var document = new PdfDocument())
        {
            var page = document.Pages.Add();
            var formattedText = new PdfFormattedText()
            {
                Text = "Hello World",
                FontSize = 24
            };

            page.Content.DrawText(formattedText, new PdfPoint(100, 700));
            document.Save("output.pdf");
        }
    }
}
// NuGet: Install-Package GemBox.Pdf
using GemBox.Pdf;
using GemBox.Pdf.Content;

class Program
{
    static void Main()
    {
        ComponentInfo.SetLicense("FREE-LIMITED-KEY");

        using (var document = new PdfDocument())
        {
            var page = document.Pages.Add();
            var formattedText = new PdfFormattedText()
            {
                Text = "Hello World",
                FontSize = 24
            };

            page.Content.DrawText(formattedText, new PdfPoint(100, 700));
            document.Save("output.pdf");
        }
    }
}
Imports GemBox.Pdf
Imports GemBox.Pdf.Content

Module Program

    Sub Main()
        ComponentInfo.SetLicense("FREE-LIMITED-KEY")

        Using document As New PdfDocument()
            Dim page = document.Pages.Add()
            Dim formattedText As New PdfFormattedText() With {
                .Text = "Hello World",
                .FontSize = 24
            }

            page.Content.DrawText(formattedText, New PdfPoint(100, 700))
            document.Save("output.pdf")
        End Using
    End Sub

End Module
$vbLabelText   $csharpLabel

IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<p>Original Content</p>");

        var stamper = new TextStamper()
        {
            Text = "Hello World",
            FontSize = 24,
            HorizontalOffset = 100,
            VerticalOffset = 700
        };

        pdf.ApplyStamp(stamper);
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<p>Original Content</p>");

        var stamper = new TextStamper()
        {
            Text = "Hello World",
            FontSize = 24,
            HorizontalOffset = 100,
            VerticalOffset = 700
        };

        pdf.ApplyStamp(stamper);
        pdf.SaveAs("output.pdf");
    }
}
Imports IronPdf
Imports IronPdf.Editing

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim pdf = renderer.RenderHtmlAsPdf("<p>Original Content</p>")

        Dim stamper = New TextStamper() With {
            .Text = "Hello World",
            .FontSize = 24,
            .HorizontalOffset = 100,
            .VerticalOffset = 700
        }

        pdf.ApplyStamp(stamper)
        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

GemBox PDF tworzy nowy PdfDocument, dodaje stronę z document.Pages.Add(), tworzy obiekt PdfFormattedText z właściwościami Text i FontSize, a następnie wywołuje page.Content.DrawText() z tekstem i PdfPoint(100, 700) do pozycjonowania. Podejście oparte na współrzędnych wymaga znajomości dokładnych pozycji X/Y.

IronPDF może rozpocząć z treścią renderowaną HTML za pomocą ChromePdfRenderer, a następnie używa TextStamper z właściwościami Text, FontSize, HorizontalOffset i VerticalOffset, stosowanymi poprzez pdf.ApplyStamp(). Metoda stemplowania pozwala na dodawanie tekstu do istniejących dokumentów z pozycjonowaniem opartym na przesunięciu.

Dowiedz się więcej o edycji plików PDF w samouczkach IronPDF.

Przewodnik po mapowaniu API

Dla programistów oceniających migracjęGemBox PDFlub porównujących możliwości, poniższe zestawienie przedstawia równoważne operacje:

Mapowanie klas podstawowych

GemBox PDFIronPDF
PdfDocumentPdfDocument
PdfPagePdfDocument.Pages[i]
PdfFormattedTextCiąg znaków HTML z CSS
PdfPointPozycjonowanie CSS lub przesunięcia stempli
PdfContentNie dotyczy (użyj HTML)
ComponentInfo.SetLicense()IronPdf.License.LicenseKey

Mapowanie operacji na dokumentach

GemBox PDFIronPDF
PdfDocument.Load(path)PdfDocument.FromFile(path)
document.Save(path)pdf.SaveAs(path)
document.Pages.Add()Renderuj HTML
document.Pages.Countpdf.PageCount
document.Pages[index]pdf.Pages[index]
document.Pages.AddClone(pages)PdfDocument.Merge()
page.Content.DrawText(text, point)renderer.RenderHtmlAsPdf(html)

Mapowanie formatowania tekstu

GemBox PDFIronPDF
formattedText.Text = "..."Treść HTML
formattedText.FontSize = 24CSS font-size: 24pt
formattedText.Font = ...CSS font-family: ...
formattedText.Color = ...CSS color: ...
new PdfPoint(100, 700)CSS position:absolute; lewo:100px; top:700px;

Ocena złożoności migracji

FunkcjaZłożoność migracji
Wczytywanie/zapisywanie plików PDFBardzo niski
Łączenie plików PDFBardzo niski
Podział plików PDFLow
Ekstrakcja tekstuBardzo niski
Dodaj tekstMedium
TabeleLow
ObrazyLow
Znaki wodneLow
Ochrona hasłemMedium
Pola formularzaMedium

Podsumowanie porównania funkcji

FunkcjaGemBox PDFIronPDF
HTML do PDFTak (dodane niedawno)Tak (silnik Chromium)
Renderowanie ciągów znaków HTMLTak (dodane niedawno)Tak
Łączenie plików PDFTak (wzorzec AddClone)Tak (statyczne Merge)
Dodaj tekstTak (oparte na współrzędnych)Tak (oparte na stempleach)
TabeleTakTak (bez ograniczeń)
CSS3 Flexbox/GridTakTak
JavaScriptTakTak
Układ przepływuNie (oparte na współrzędnych)Tak (HTML/CSS)
Wersja bezpłatna2 stronyTylko znak wodny

Kiedy zespoły rozważają przejście zGemBox PDFna IronPDF

Zespoły programistów rozważają przejście zGemBox PDFnaIronPDFz kilku powodów:

Limit 2 Stron: Wersja darmowa ogranicza wyjście do 2 stron, co sprawia, że wersja darmowa jest niepraktyczna dla dłuższych dokumentów biznesowych. Bezpłatna wersjaIronPDFnie ma ograniczeń dotyczących treści — zawiera jedynie znak wodny.

Ograniczona Konwersja HTML na PDF: ChociażGemBox PDFniedawno dodał wsparcie dla przekształcenia HTML na PDF, głównie używa programowego konstruowania dokumentów z obliczeniami współrzędnych. Silnik ChromiumIronPDFrenderuje HTML/CSS bezpośrednio z pełną wiernością, wykorzystując umiejętności, które programiści już posiadają.

Złożoność układu opartego na współrzędnych: W przeciwieństwie do HTML/CSS, gdzie układ jest płynny,GemBox PDFwymaga obliczenia dokładnych pozycji X/Y dla każdego elementu tekstowego, obrazu i kształtu. Każda zmiana projektu — dostosowanie odstępów, zmiana rozmiarów czcionek — wymaga ponownego obliczenia współrzędnych dla wszystkich elementów, których dotyczy zmiana.

Limit Stron: Limit 2 stron w wersji darmowej uniemożliwia dłuższe dokumenty biznesowe bez licencji. Kompleksowe raporty z wieloma stronami szybko przekraczają limity.IronPDFpozwala na nieograniczoną zawartość w swojej wersji próbnej.

Wymagania Współczesnego CSS: ChociażGemBox PDFdodał wsparcie dla CSS, aplikacje potrzebujące kompleksowego Flexbox, Grid lub animacji CSS3 mogą uznać, że silnik ChromiumIronPDFdostarcza bardziej kompletne nowoczesne wsparcie dla CSS.

Krzywa uczenia się: Programiści muszą myśleć w kategoriach układów współrzędnych PDF, a nie przepływu dokumentów, co sprawia, że proste zadania stają się zaskakująco złożone.IronPDFwykorzystuje znane programistom stron internetowych języki HTML/CSS.

Mocne strony i kwestie do rozważenia

Atuty GemBox PDF

  • Ukierunkowana funkcjonalność: zoptymalizowana pod kątem konkretnych operacji na plikach PDF
  • Łatwość wdrożenia: komponent .NET bez zależności od podmiotów zewnętrznych
  • Wsparcie komercyjne: dedykowane wsparcie i aktualizacje w ramach licencji komercyjnej

Uwagi dotyczące GemBox PDF

  • Limit 2 Stron: Wersja darmowa ograniczona do 2 stron
  • Ograniczony HTML na PDF: Niedawno dodano ale mniej dojrzałe niż alternatywy
  • Układ oparty na współrzędnych: ręczne obliczanie każdej pozycji X/Y
  • Ograniczony zestaw funkcji: mniej funkcji w porównaniu z kompleksowymi bibliotekami
  • Opór zmian projektowych: Każda zmiana układu wymaga ponownego obliczenia współrzędnych

Atuty IronPDF

  • Układ HTML/CSS: Należy wykorzystać technologie internetowe znane programistom
  • Brak Ograniczeń Treści: Wersja próbna ma tylko znak wodny, brak ograniczeń stron
  • Renderowanie Chromium: Pełna obsługa CSS3, Flexbox, Grid i JavaScript
  • Układ przepływowy: Treść układa się naturalnie, bez obliczeń współrzędnych
  • Nowoczesne podejście: zmiany w projekcie wymagają edycji kodu HTML/CSS, a nie ponownego obliczania pozycji
  • Kompleksowe zasoby: obszerne samouczki i dokumentacja

Uwagi dotyczące IronPDF

  • Inny paradygmat: Wymaga myślenia w kategoriach HTML/CSS, a nie współrzędnych
  • Licencja komercyjna: Wymagana do użytku produkcyjnego

Wnioski

GemBox PDF iIronPDFreprezentują zasadniczo różne podejścia do generowania plików PDF w środowisku .NET. System układu oparty na współrzędnychGemBox PDFwymaga od programistów obliczania dokładnych pozycji dla każdego elementu, a jego limit 2 stron w wersji darmowej ogranicza użyteczność dla dłuższych dokumentów biznesowych.

IronPDF dostarcza nowoczesną alternatywę używającą HTML/CSS do układu, eliminując obliczenia współrzędnych i ograniczenia stron. Silnik renderujący Chromium obsługuje w pełni CSS3, Flexbox, Grid i JavaScript, umożliwiając programistom korzystanie ze znanych technologii internetowych do generowania plików PDF.

W miarę jak organizacje planują wdrożenie .NET 10, C# 14 oraz tworzenie aplikacji do 2026 r., wybór między tworzeniem plików PDF opartym na współrzędnych a układem HTML/CSS ma znaczący wpływ na tempo rozwoju. Zespoły wymagające tabel, złożonych układów lub nowoczesnego CSS przekonają się, że podejścieIronPDFeliminuje trudności związane z tworzeniem dokumentów opartych na współrzędnych.

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.

Zwróć uwagęAdobe Acrobat i GemBox sa zarejestrowanymi znakami towarowymi swoich odpowiednich wlascicieli. Ta strona nie jest zwiazana, polecana ani sponsorowana przez Adobe Inc. ani GemBox Ltd. Wszystkie nazwy produktów, logo i marki są własnością ich odpowiednich właścicieli. Porównania mają charakter wyłącznie informacyjny i odzwierciedlają informacje dostępne publicznie w momencie pisania.