PORóWNANIE

GrabzIt vs IronPDF: Przewodnik po porównaniu technicznym

Kiedy programiści .NET oceniają rozwiązania do generowania plików PDF, GrabzIt wyróżnia się jako usługa w chmurze do przechwytywania zrzutów ekranu i plików PDF. Chociaż GrabzIt oferuje szybką integrację, tworzy pliki PDF oparte na obrazach, w których tekst nie jest zaznaczalny, i wymaga wysyłania całej zawartości do zewnętrznych serwerów w celu przetworzenia.IronPDFoferuje inną opcję: bibliotekę działającą w tle, która generuje prawdziwe pliki PDF wektorowe z tekstem, który można zaznaczać i przeszukiwać — wszystko przetwarzane lokalnie bez zewnętrznych zależności.

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

Zrozumienie GrabzIt

GrabzIt to płatna usługa SaaS specjalizująca się w tworzeniu zrzutów ekranu i plików PDF. Pozwala programistom konwertować strony internetowe lub treści HTML na pliki PDF za pośrednictwem interfejsu API w chmurze. Serwis korzysta z GrabzItClient zainicjalizowanego za pomocą klucza aplikacji i sekretu do uwierzytelniania.

GrabzIt dostarcza metody takie jak HTMLToPDF() do konwersji ciągów HTML, URLToPDF() do przechwytywania stron internetowych oraz HTMLToImage() do generowania obrazów. Konfiguracja używa klas opcji takich jak PDFOptions z właściwościami takimi jak CustomId i PageSize, oraz ImageOptions z właściwościami Format, Width i Height. Wyniki są zapisywane przy użyciu SaveTo() do synchronicznego zapisu pliku lub Save() z adresem URL wywołania zwrotnego do asynchronicznego przetwarzania.

Kluczową cechą GrabzIt jest to, że tworzy on pliki PDF oparte na obrazach — zasadniczo są to zrzuty ekranu zapisane w formacie PDF. Tekst w tych plikach PDF nie jest zaznaczalny, a wyszukiwanie tekstu wymaga przetwarzania OCR. Cała zawartość jest wysyłana do serwerów GrabzIt w celu przetworzenia, co wiąże się z kwestiami prywatności i opóźnieniami sieciowymi.

Zrozumienie IronPDF

IronPDF to biblioteka .NET działająca w trybie in-process, generująca prawdziwe wektorowe pliki PDF z tekstem, który można zaznaczać i przeszukiwać. Biblioteka przetwarza całą zawartość lokalnie, bez zależności od zewnętrznych serwerów.

IronPDF używa ChromePdfRenderer jako swojej głównej klasy renderującej z metodami takimi jak RenderHtmlAsPdf() i RenderUrlAsPdf(). Konfiguracja jest obsługiwana poprzez właściwości RenderingOptions. Do konwersji obrazu wyrenderowane PDF-y mogą być konwertowane przy użyciu ToBitmap(). Dokumenty są zapisywane przy użyciu SaveAs(), a wszystkie operacje są synchroniczne — nie są wymagańe żadne uchwyty wywołań zwrotnych ani webhooki.

IronPDF generuje pliki PDF oparte na wektorach, w których tekst pozostaje domyślnie zaznaczalny i przeszukiwalny, bez konieczności stosowania OCR. Rozmiary plików są mniejsze niż w przypadku plików PDF opartych na obrazach, a przetwarzanie odbywa się lokalnie z typowym opóźnieniem wynoszącym około 100–500 ms.

Porównanie architektury i modeli przetwarzania

Podstawowa różnica między tymi rozwiązaniami polega na architekturze przetwarzania i formacie wyjściowym.

Aspekt GrabzIt IronPDF
Typ pliku PDF Na podstawie obrazu (zrzut ekranu) Prawdziwy wektorowy plik PDF
Zaznaczenie tekstu Niemożliwe Zaznaczenie całego tekstu
Wyszukiwanie tekstu Wymagane OCR Wyszukiwanie w języku ojczystym
Miejsce przetwarzania Serwery zewnętrzne Lokalne/w trakcie realizacji
Prywatność Dane wysyłane na zewnątrz Dane pozostają lokalne
Opóźnienie Czas przesyłu w obie strony (500 ms–5 s) Przetwarzanie lokalne (~100 ms)
Model cenowy Na przechwycenie Licencja na programistę
Funkcja pracy w trybie offline Nie Tak
Rozmiar pliku Duży (dane obrazu) Mały (dane wektorowe)
Wymagane oddzwonienie Tak (model asynchroniczny) Nie (synchroniczne/asynchroniczne)
Obsługa CSS/JS Ograniczone Pełny silnik Chromium

Architektura chmurowa GrabzIt oznacza, że każde wygenerowanie pliku PDF wymaga wywołania HTTP do serwerów zewnętrznych. Wiąże się to z opóźnieniami sieciowymi, problemami z dostępnością oraz kwestiami związanymi z ograniczaniem przepustowości. PodejścieIronPDFoparte na przetwarzaniu w tle eliminuje te zależności infrastrukturalne.

Porównanie kodu: typowe operacje na plikach PDF

Konwersja HTML do PDF

Najbardziej podstawowa operacja pokazuje różnice w architekturze i API.

GrabzIt:

// NuGet: Install-Package GrabzIt
using GrabzIt;
using GrabzIt.Parameters;
using System;

class Program
{
    static void Main()
    {
        var grabzIt = new GrabzItClient("YOUR_APPLICATION_KEY", "YOUR_APPLICATION_SECRET");
        var options = new PDFOptions();
        options.CustomId = "my-pdf";

        grabzIt.HTMLToPDF("<html><body><h1>Hello World</h1></body></html>", options);
        grabzIt.SaveTo("output.pdf");
    }
}
// NuGet: Install-Package GrabzIt
using GrabzIt;
using GrabzIt.Parameters;
using System;

class Program
{
    static void Main()
    {
        var grabzIt = new GrabzItClient("YOUR_APPLICATION_KEY", "YOUR_APPLICATION_SECRET");
        var options = new PDFOptions();
        options.CustomId = "my-pdf";

        grabzIt.HTMLToPDF("<html><body><h1>Hello World</h1></body></html>", options);
        grabzIt.SaveTo("output.pdf");
    }
}
Imports GrabzIt
Imports GrabzIt.Parameters
Imports System

Module Program
    Sub Main()
        Dim grabzIt As New GrabzItClient("YOUR_APPLICATION_KEY", "YOUR_APPLICATION_SECRET")
        Dim options As New PDFOptions()
        options.CustomId = "my-pdf"

        grabzIt.HTMLToPDF("<html><body><h1>Hello World</h1></body></html>", options)
        grabzIt.SaveTo("output.pdf")
    End Sub
End Module
$vbLabelText   $csharpLabel

IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

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

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

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

GrabzIt wymaga utworzenia GrabzItClient z kluczami aplikacji i danymi uwierzytelniającymi, skonfigurowania PDFOptions z właściwościami takimi jak CustomId, wywołania HTMLToPDF() z zawartością HTML i opcjami, a następnie zapisania przy użyciu SaveTo(). Treść jest wysyłana do serwerów GrabzIt w celu przetworzenia.

IronPDF tworzy ChromePdfRenderer, wywołuje RenderHtmlAsPdf() bezpośrednio z ciągiem HTML i zapisuje przy użyciu SaveAs(). Operacja jest przetwarzana lokalnie i nie wymaga zewnętrznego uwierzytelniania. Powstały plik PDF zawiera prawdziwy tekst wektorowy, który można zaznaczać i przeszukiwać.

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

Konwersja aktywnych stron internetowych wykazuje podobne wzorce przy różnych podejściach konfiguracyjnych.

GrabzIt:

// NuGet: Install-Package GrabzIt
using GrabzIt;
using GrabzIt.Parameters;
using System;

class Program
{
    static void Main()
    {
        var grabzIt = new GrabzItClient("YOUR_APPLICATION_KEY", "YOUR_APPLICATION_SECRET");
        var options = new PDFOptions();
        options.PageSize = PageSize.A4;

        grabzIt.URLToPDF("https://www.example.com", options);
        grabzIt.SaveTo("webpage.pdf");
    }
}
// NuGet: Install-Package GrabzIt
using GrabzIt;
using GrabzIt.Parameters;
using System;

class Program
{
    static void Main()
    {
        var grabzIt = new GrabzItClient("YOUR_APPLICATION_KEY", "YOUR_APPLICATION_SECRET");
        var options = new PDFOptions();
        options.PageSize = PageSize.A4;

        grabzIt.URLToPDF("https://www.example.com", options);
        grabzIt.SaveTo("webpage.pdf");
    }
}
Imports GrabzIt
Imports GrabzIt.Parameters
Imports System

Module Program
    Sub Main()
        Dim grabzIt As New GrabzItClient("YOUR_APPLICATION_KEY", "YOUR_APPLICATION_SECRET")
        Dim options As New PDFOptions()
        options.PageSize = PageSize.A4

        grabzIt.URLToPDF("https://www.example.com", options)
        grabzIt.SaveTo("webpage.pdf")
    End Sub
End Module
$vbLabelText   $csharpLabel

IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
        pdf.SaveAs("webpage.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
        pdf.SaveAs("webpage.pdf");
    }
}
Imports IronPdf
Imports System

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim pdf = renderer.RenderUrlAsPdf("https://www.example.com")
        pdf.SaveAs("webpage.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

GrabzIt konfiguruje rozmiar strony przez PDFOptions.PageSize = PageSize.A4, a następnie wywołuje URLToPDF() z adresem URL i opcjami. Strona internetowa jest przechwytywana na serwerach GrabzIt i zwracana jako plik PDF oparty na obrazach.

IronPDF wywołuje RenderUrlAsPdf() bezpośrednio z ciągiem URL. Rozmiar strony można skonfigurować za pomocą renderer.RenderingOptions.PaperSize. Strona jest renderowana lokalnie przy użyciu wbudowanego silnika Chromium IronPDF, tworząc wektorowy plik PDF z tekstem, który można zaznaczyć.

Konwersja HTML na obraz

Generowanie obrazów ilustruje różne podejścia do obsługi wyników innych niż pliki PDF.

GrabzIt:

// NuGet: Install-Package GrabzIt
using GrabzIt;
using GrabzIt.Parameters;
using System;

class Program
{
    static void Main()
    {
        var grabzIt = new GrabzItClient("YOUR_APPLICATION_KEY", "YOUR_APPLICATION_SECRET");
        var options = new ImageOptions();
        options.Format = ImageFormat.png;
        options.Width = 800;
        options.Height = 600;

        grabzIt.HTMLToImage("<html><body><h1>Hello World</h1></body></html>", options);
        grabzIt.SaveTo("output.png");
    }
}
// NuGet: Install-Package GrabzIt
using GrabzIt;
using GrabzIt.Parameters;
using System;

class Program
{
    static void Main()
    {
        var grabzIt = new GrabzItClient("YOUR_APPLICATION_KEY", "YOUR_APPLICATION_SECRET");
        var options = new ImageOptions();
        options.Format = ImageFormat.png;
        options.Width = 800;
        options.Height = 600;

        grabzIt.HTMLToImage("<html><body><h1>Hello World</h1></body></html>", options);
        grabzIt.SaveTo("output.png");
    }
}
Imports GrabzIt
Imports GrabzIt.Parameters
Imports System

Module Program
    Sub Main()
        Dim grabzIt As New GrabzItClient("YOUR_APPLICATION_KEY", "YOUR_APPLICATION_SECRET")
        Dim options As New ImageOptions()
        options.Format = ImageFormat.png
        options.Width = 800
        options.Height = 600

        grabzIt.HTMLToImage("<html><body><h1>Hello World</h1></body></html>", options)
        grabzIt.SaveTo("output.png")
    End Sub
End Module
$vbLabelText   $csharpLabel

IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Drawing;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Hello World</h1></body></html>");
        var images = pdf.ToBitmap();
        images[0].Save("output.png", System.Drawing.Imaging.ImageFormat.Png);
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Drawing;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Hello World</h1></body></html>");
        var images = pdf.ToBitmap();
        images[0].Save("output.png", System.Drawing.Imaging.ImageFormat.Png);
    }
}
Imports IronPdf
Imports System
Imports System.Drawing

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Hello World</h1></body></html>")
        Dim images = pdf.ToBitmap()
        images(0).Save("output.png", System.Drawing.Imaging.ImageFormat.Png)
    End Sub
End Class
$vbLabelText   $csharpLabel

GrabzIt ma dedykowaną metodę HTMLToImage() z ImageOptions do konfigurowania właściwości Format, Width i Height. Obraz jest generowany na serwerach GrabzIt.

IronPDF najpierw renderuje HTML do PDF przy użyciu RenderHtmlAsPdf(), a następnie konwertuje na bitmapę używając ToBitmap(), co zwraca tablicę obrazów (po jednym na stronę). Pojedyncze obrazy są zapisywane przy użyciu standardowych metod System.Drawing. To dwuetapowe podejście zapewnia ten sam wynik, przy czym całe przetwarzanie odbywa się lokalnie.

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

Przewodnik po mapowaniu API

Dla programistów rozważających migrację do GrabzIt lub porównujących możliwości, poniższe zestawienie przedstawia równoważne operacje:

Mapowanie podstawowych metod

Metoda GrabzIt OdpowiednikIronPDF
new GrabzItClient(key, secret) new ChromePdfRenderer()
HTMLToPDF(html) renderer.RenderHtmlAsPdf(html)
HTMLToPDF(html, options) Skonfiguruj RenderingOptions najpierw
URLToPDF(url) renderer.RenderUrlAsPdf(url)
URLToPDF(url, options) Skonfiguruj RenderingOptions najpierw
HTMLToImage(html) pdf.ToBitmap()
Save(callbackUrl) pdf.SaveAs(path) lub pdf.BinaryData
SaveTo(filePath) pdf.SaveAs(filePath)
GetResult(id) Nie dotyczy
GetStatus(id) Nie dotyczy

Mapowanie PDFOptions do RenderingOptions

GrabzIt PDFOptions WłaściwościIronPDF
MarginTop RenderingOptions.MarginTop
MarginBottom RenderingOptions.MarginBottom
MarginLeft RenderingOptions.MarginLeft
MarginRight RenderingOptions.MarginRight
PageSize (A4, Letter) RenderingOptions.PaperSize
Orientation RenderingOptions.PaperOrientation
BrowserWidth RenderingOptions.ViewPortWidth
BrowserHeight RenderingOptions.ViewPortHeight
Delay RenderingOptions.RenderDelay
CustomWaterMark pdf.ApplyWatermark()
Password pdf.SecuritySettings.UserPassword
IncludeBackground RenderingOptions.PrintHtmlBackgrounds
TemplateId RenderingOptions.HtmlHeader/Footer

Mapowanie opcji obrazu do IronPDF

GrabzIt ImageOptions OdpowiednikIronPDF
Format (png, jpg) bitmap.Save(path, ImageFormat.Png)
Width RenderingOptions.ViewPortWidth
Height RenderingOptions.ViewPortHeight

Podsumowanie porównania funkcji

Funkcja GrabzIt IronPDF
Pliki PDF w formacie True Vector ❌(na podstawie obrazu)
Tekst do zaznaczenia
Tekst z możliwością wyszukiwania (język źródłowy) ❌(wymaga OCR)
Przetwarzanie lokalne ❌(serwery zewnętrzne)
Funkcja pracy w trybie offline
Operacje synchroniczne ⚠️ (model callback)
Wymagane uwierzytelnienie ✅(klucz/hasło)
HTML do PDF
URL do pliku PDF
HTML na obraz ✅(język ojczysty) ✅(za pośrednictwem ToBitmap)
Ekstrakcja tekstu ❌(bez OCR)

Kiedy zespoły rozważają przejście z GrabzIt na IronPDF

Zespoły programistów rozważają przejście z GrabzIt naIronPDFz kilku powodów:

Ograniczenia plików PDF opartych na obrazach: GrabzIt tworzy pliki PDF oparte na zrzutach ekranu, w których tekst nie jest zaznaczalny — są to zasadniczo obrazy zapakowane w format PDF. W przypadku aplikacji wymagających zaznaczania tekstu, funkcji kopiowania/wklejania lub zgodności z zasadami dostępności stanowi to istotne ograniczenie.IronPDFgeneruje prawdziwe pliki PDF w formacie wektorowym z tekstem, który można w pełni zaznaczać i przeszukiwać.

Kwestie związane z przetwarzaniem zewnętrznym: Cała treść wysyłana do GrabzIt jest przetwarzana na ich serwerach zewnętrznych. W przypadku aplikacji przetwarzających dane wrażliwe należy uwzględnić kwestie prywatności i zgodności z przepisami.IronPDFprzetwarza wszystko lokalnie, przechowując dane w ramach infrastruktury użytkownika.

Złożoność architektury wywołań zwrotnych: Asynchroniczny model wywołań zwrotnych GrabzIt wymaga infrastruktury obsługi webhooków — punktów końcowych wywołań zwrotnych, odpytywania o status oraz logiki pobierania wyników.IronPDFzapewnia operacje synchroniczne, które zwracają wyniki natychmiast, całkowicie eliminując kod obsługi wywołań zwrotnych.

Ceny za przechwycenie w skali: Model płatności za rzeczywiste wykorzystanie oferowany przez GrabzIt może stać się kosztowny wraz ze wzrostem liczby generowanych plików PDF. LicencjonowanieIronPDFna programistę zapewnia przewidywalne koszty niezależnie od wielkości.

Wymagania dotyczące wyszukiwania tekstu: Ponieważ pliki PDF GrabzIt są oparte na obrazach, wyszukiwanie i wyodrębnianie tekstu wymaga oddzielnego przetwarzania OCR.IronPDFPDFs są natywnie przeszukiwalne, a ekstrakcja tekstu działa bezpośrednio z pdf.ExtractAllText().

Kwestie związane z rozmiarem plików: Pliki PDF oparte na obrazach z serwisu GrabzIt są znacznie większe (5–10 razy) niż pliki PDF oparte na wektorach. W przypadku aplikacji generujących wiele plików PDF lub mających ograniczenia dotyczące pamięci ta różnica jest znacząca.

Zależność od sieci: GrabzIt nie może generować plików PDF bez połączenia z Internetem.IronPDFdziała w trybie offline, co jest niezbędne w przypadku aplikacji, które muszą funkcjonować w środowiskach bez połączenia z internetem.

Mocne strony i kwestie do rozważenia

Atuty GrabzIt

  • Szybka konfiguracja: integracja klucza API bez lokalnych zależności
  • Niezależność od języka: Działa z każdym językiem, który może wykonywać wywołania HTTP
  • Brak zasobów lokalnych: przetwarzanie odbywa się w infrastrukturze GrabzIt

Uwagi dotyczące GrabzIt

  • Pliki PDF oparte na obrazach: tekst nie jest zaznaczalny ani przeszukiwalny bez OCR
  • Przetwarzanie zewnętrzne: Dane wysyłane na serwery stron trzecich
  • Złożoność wywołań zwrotnych: Wymaga infrastruktury webhooków
  • Koszty za przechwycenie: Ceny są uzależnione od wielkości
  • Wymagana sieć: Brak możliwości pracy w trybie offline
  • Większe pliki: Dane obrazówe znacznie zwiększają rozmiar pliku
  • Opóźnienie: Czas przesyłu w obie strony w sieci wynosi od 500 ms do 5 s na żądanie

Atuty IronPDF

  • Pliki PDF True Vector: tekst z możliwością zaznaczania i wyszukiwania
  • Przetwarzanie lokalne: dane pozostają w ramach Twojej infrastruktury
  • Operacje synchroniczne: nie są potrzebne procedury obsługi wywołań zwrotnych
  • Mniejsze pliki: Dane wektorowe zmniejszają rozmiar plików 5–10-krotnie
  • Wyodrębnianie tekstu: Natywne wyodrębnianie tekstu bez OCR
  • Możliwość pracy w trybie offline: Działa bez połączenia z Internetem
  • Kompleksowe zasoby: obszerne samouczki i dokumentacja

Uwagi dotyczące IronPDF

  • Zasoby lokalne: Wykorzystuje lokalny procesor/pamięć do przetwarzania
  • Licencja komercyjna: Wymagana do użytku produkcyjnego

Wnioski

GrabzIt iIronPDFreprezentują zasadniczo różne podejścia do generowania plików PDF w aplikacjach .NET. Usługa zrzutów ekranu w chmurze firmy GrabzIt tworzy pliki PDF oparte na obrazach poprzez zewnętrzne wywołania API, co wymaga uwierzytelnienia, obsługi wywołań zwrotnych oraz akceptacji faktu, że tekst w pliku wyjściowym nie będzie można zaznaczyć.

IronPDF oferuje alternatywę działającą w tle, która generuje prawdziwe pliki PDF wektorowe z tekstem, który można zaznaczać i przeszukiwać. Biblioteka eliminuje zależności zewnętrzne, infrastrukturę wywołań zwrotnych i opóźnienia sieciowe, generując jednocześnie mniejsze pliki, które obsługują natywne wyodrębnianie tekstu.

W miarę jak organizacje planują wdrożenie .NET 10, C# 14 oraz tworzenie aplikacji do 2026 r., wybór między plikami PDF w chmurze opartymi na obrazach a prawdziwymi wektorowymi plikami PDF lokalnymi ma znaczący wpływ na użyteczność dokumentów, ich dostępność oraz złożoność infrastruktury. Zespoły wymagające możliwości zaznaczania tekstu, ochrony danych lub uproszczonej architektury przekonają się, żeIronPDFskutecznie spełnia te wymagania.

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.