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 układ oparty na współrzędnych, limit 20 akapitów w wersji darmowej oraz brak natywnej konwersji HTML do PDF sprawiają, że wiele zespołów rozgląda się za alternatywami.IronPDFoferuje nowoczesne podejście wykorzystujące HTML/CSS do tworzenia układu graficznego z silnikiem renderującym Chromium, eliminując potrzebę obliczania współrzędnych i ograniczeń dotyczących akapitów.

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 używa PdfDocument jako głównej klasy dokumentu, z rejestracją licencji za pomocą ComponentInfo.SetLicense() uruchamianą przed jakimikolwiek operacjami. Do dodawania tekstu biblioteka używa obiektów PdfFormattedText z właściwościami jak Text i FontSize, pozycjonowanymi za pomocą współrzędnych PdfPoint i renderowanymi poprzez page.Content.DrawText(). Ładowanie dokumentu używa PdfDocument.Load() a zapis używa document.Save().

Godną uwagi cechą jest limit 20 akapitów w wersji darmowej. Co istotne, komórki tabeli wliczają się do tego limitu — prosta tabela o wymiarach 10 wierszy i 5 kolumn zajmuje 50 "akapitów", co sprawia, że wersja darmowa jest niepraktyczna nawet w przypadku podstawowych dokumentów biznesowych zawierających tabele. 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 głównej klasy renderowania, z RenderHtmlAsPdf() akceptującą ciągi znaków HTML i zwracającą obiekty PdfDocument. Aby dodać tekst do istniejących dokumentów, TextStamper zapewnia właściwości takie jak Text, FontSize, HorizontalOffset i VerticalOffset, stosowane za pomocą ApplyStamp(). Ładowanie dokumentu używa PdfDocument.FromFile() a zapis używa SaveAs().

Biblioteka nie ma ograniczeń dotyczących liczby akapitów. 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.

Aspekt GemBox PDF IronPDF
Ograniczenia wersji darmowej 20 akapitów (w tym komórki tabeli) Tylko znak wodny, bez ograniczeń dotyczących treści
HTML do PDF Nieobsługiwane Pełny silnik Chromium
Podejście do układu graficznego Ręczne, oparte na współrzędnych Układ HTML/CSS
Tabele Wlicza się do limitu akapitów Bez ograniczeń, użyj tabel HTML
Nowoczesny CSS Nie dotyczy Flexbox, Grid, CSS3
Obsługa JavaScript Nie dotyczy Pełne wykonywanie koduJavaScript
Zmiany w projekcie Przelicz współrzędne Edytuj HTML/CSS
Krzywa uczenia się Układ współrzędnych PDF HTML/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() z ścieżką do pliku, wymagając istniejącego pliku HTML do załadowania, a następnie Save() do wyprowadzenia. 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, a następnie 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 utworzenia 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, a następnie 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ę za pomocą 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 pozycjonowaniem za pomocą PdfPoint(100, 700). Podejście oparte na współrzędnych wymaga znajomości dokładnych pozycji X/Y.

IronPDF może rozpocząć od zawartości renderowanej w HTML-u używając ChromePdfRenderer, a następnie używać TextStamper z właściwościami Text, FontSize, HorizontalOffset, i VerticalOffset, stosowanymi za pomocą 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 PDF IronPDF
PdfDocument PdfDocument
PdfPage PdfDocument.Pages[i]
PdfFormattedText Ciąg znaków HTML z CSS
PdfPoint Pozycjonowanie CSS lub przesunięcia stempli
PdfContent Nie dotyczy (użyj HTML)
ComponentInfo.SetLicense() IronPdf.License.LicenseKey

Mapowanie operacji na dokumentach

GemBox PDF IronPDF
PdfDocument.Load(path) PdfDocument.FromFile(path)
document.Save(path) pdf.SaveAs(path)
document.Pages.Add() Renderuj HTML
document.Pages.Count pdf.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 PDF IronPDF
formattedText.Text = "..." Treść HTML
formattedText.FontSize = 24 CSS font-size: 24pt
formattedText.Font = ... CSS font-family: ...
formattedText.Color = ... CSS color: ...
new PdfPoint(100, 700) CSS position:absolute; left:100px; top:700px;

Ocena złożoności migracji

Funkcja Złożoność migracji
Wczytywanie/zapisywanie plików PDF Bardzo niski
Łączenie plików PDF Bardzo niski
Podział plików PDF Low
Ekstrakcja tekstu Bardzo niski
Dodaj tekst Medium
Tabele Low
Obrazy Low
Znaki wodne Low
Ochrona hasłem Medium
Pola formularza Medium

Podsumowanie porównania funkcji

Funkcja GemBox PDF IronPDF
HTML do PDF ❌(tylko ładowanie pliku) ✅(silnik Chromium)
Renderowanie ciągów znaków HTML
Łączenie plików PDF ✅(wzorzec AddClone) ✅(statyczne scałanie)
Dodaj tekst ✅ (bazujące na współrzędnych) ✅(oparte na stemplach)
Tabele ⚠️ (liczy się do limitu 20 akapitów) ✅(nieograniczona)
CSS3 Flexbox/Grid
JavaScript
Układ przepływu ❌(oparte na współrzędnych) ✅ (HTML/CSS)
Wersja bezpłatna 20 akapitów (w tym komórki tabeli) Tylko 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 20 akapitów: Wersja darmowa ogranicza treść do 20 akapitów, a komórki tabel są wliczane do tego limitu. Prosta tabela o wymiarach 10 wierszy i 5 kolumn wykorzystuje 50 "akapitów", co sprawia, że wersja darmowa jest niepraktyczna nawet w przypadku podstawowych dokumentów biznesowych. Bezpłatna wersjaIronPDFnie ma ograniczeń dotyczących treści — zawiera jedynie znak wodny.

Brak konwersji HTML do PDF:GemBox PDFwymaga programowego tworzenia dokumentów z obliczeniami współrzędnych. Nie ma prostej funkcji "renderuj ten kod HTML". Silnik Chromium firmyIronPDFrenderuje HTML/CSS bezpośrednio, 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.

Liczba komórek w tabeli: Ograniczenie liczby akapitów w komórkach tabeli sprawia, że nawet podstawowe dokumenty biznesowe są niemożliwe do wykonania w wersji darmowej. Złożone raporty z tabelami danych szybko przekraczają limity.IronPDFpozwala na tworzenie nieograniczonej liczby tabel HTML.

Wymagania dotyczące nowoczesnego CSS: Aplikacje wymagające Flexbox, Grid lub animacji CSS3 nie mogą korzystać z podejścia opartego na współrzędnych stosowanego przez GemBox PDF. Silnik Chromium firmyIronPDFzapewnia pełną obsługę nowoczesnego 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 20 akapitów: wersja darmowa jest mocno ograniczona, obejmuje komórki tabel
  • Bez konwersji HTML do PDF: Dokumenty muszą być tworzone programowo
  • 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ń dotyczących treści: wersja próbna zawiera jedynie znak wodny, nie ma ograniczeń dotyczących liczby akapitów
  • 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ędnych wGemBox PDFwymaga od programistów obliczenia dokładnych pozycji każdego elementu, a limit 20 akapitów (licząc komórki tabeli) poważnie ogranicza użyteczność wersji darmowej w przypadku dokumentów biznesowych.

IronPDF stanowi nowoczesną alternatywę wykorzystującą HTML/CSS do tworzenia układu, eliminując obliczenia współrzędnych i ograniczenia dotyczące akapitów. 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.