Jak przeprowadzić migrację z GrabzIt do IronPDF w języku C#
Przejście zGrabzItna IronPDF zmienia proces pracy z plikami PDF w środowisku .NET z opartej na chmurze usługi przechwytywania zrzutów ekranu, wymagającej skomplikowanych wywołań zwrotnych, na bibliotekę działającą w ramach procesu, która generuje prawdziwe wektorowe pliki PDF z tekstem, który można zaznaczać i przeszukiwać. Niniejszy przewodnik zawiera kompleksową, szczegółową ścieżkę migracji, która eliminuje zależności od serwerów zewnętrznych, procedury obsługi wywołań zwrotnych oraz model cenowy oparty na liczbie przechwyceń dla profesjonalnych programistów .NET.
Dlaczego warto przejść zGrabzItna IronPDF
Problem architektury GrabzIt
GrabzIt to oparta na chmurze usługa tworzenia zrzutów ekranu i przechwytywania plików PDF. Chociaż jest wygodna do szybkiej integracji, ma fundamentalne ograniczenia architektoniczne:
-
Pliki PDF oparte na obrazach:GrabzIttworzy pliki PDF oparte na zrzutach ekranu, w których tekst nie jest zaznaczalny — są to w zasadzie obrazy zapakowane w format PDF. Jest to podstawowe ograniczenie dla każdego przypadku użycia wymagającego manipulacji tekstem lub dostępności.
-
Przetwarzanie zewnętrzne: Cała treść jest wysyłana do serwerówGrabzItw celu przetworzenia — co rodzi obawy dotyczące prywatności i zgodności z przepisami w przypadku danych wrażliwych. Twoje treści HTML opuszczają Twoją infrastrukturę.
-
Złożoność wywołań zwrotnych:GrabzItwykorzystuje asynchroniczny model wywołań zwrotnych, który wymaga infrastruktury do obsługi webhooków. Należy skonfigurować punkty końcowe w celu odbierania wyników, co zwiększa złożoność architektury.
-
Ceny za przechwycenie: Model płatności za rzeczywiste wykorzystanie może stać się kosztowny przy większej skali. Każde wygenerowanie pliku PDF wiąże się z kosztem.
-
Brak wyszukiwania tekstu: Ponieważ pliki PDF są oparte na obrazach, wyszukiwanie i wyodrębnianie tekstu nie działa bez OCR — co stanowi dodatkowy etap i koszt.
-
Większe rozmiary plików: Pliki PDF oparte na obrazach są znacznie większe niż pliki PDF oparte na wektórach, często nawet 5–10 razy.
-
Zależność od sieci: Nie można generować plików PDF bez połączenia z Internetem, co uniemożliwia pracę w trybie offline.
- Opóźnienie: Każda generacja PDF wymaga sieciowej podróży w dwie strony do zewnętrznych serwerów, co dodaje zauważalne opóźnienie w porównaniu do lokalnej generacji wewnątrz procesu.
PorównanieGrabzIti IronPDF
| 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 (asynchronicznie) | Nie (synchroniczne/asynchroniczne) |
| Obsługa CSS/JS | Ograniczone | Pełny silnik Chromium |
IronPDF natively integrates z nowoczesnymi wzorcami .NET i działa całkowicie wewnątrz procesu, eliminując podróż do chmury z twojego pipeline PDF.
Ocena złożoności migracji
Szacowany nakład pracy według funkcji
| Funkcja | Złożoność migracji |
|---|---|
| HTML do PDF | Bardzo niski |
| URL do pliku PDF | Bardzo niski |
| HTML na obraz | Niski |
| Rozmiar strony/marginesy | Niski |
| Obsługa wywołań zwrotnych | Niski |
| Znaki wodne | Niski |
| Nagłówki/stopki | Medium |
| Klucze uwierzytelniające | Bardzo niski |
Zmiana paradygmatu
Podstawową zmianą w tej migracjiGrabzItjest przejście z asynchronicznego przetwarzania w chmurze opartego na wywołaniach zwrotnych na synchroniczne generowanie w ramach procesu:
GrabzIt: Wyślij HTML → Poczekaj na wywołanie zwrotne → Pobierz wynik z serwera
IronPDF: Renderuj HTML → Uzyskaj plik PDF natychmiast
Zanim zaczniesz
Wymagania wstępne
- Wersja .NET:IronPDF obsługuje .NET Framework 4.6.2+ i .NET Core 3.1+ / .NET 5+
- Klucz licencyjny: Uzyskaj klucz licencyjny IronPDF na stronie ironpdf.com
- Plan usunięcia infrastruktury: Udokumentuj procedury obsługi wywołań zwrotnych i punkty końcowe webhooków na potrzeby wycofania z eksploatacji
Zidentyfikuj wszystkie użycia GrabzIt
# FindGrabzItclient usage
grep -r "GrabzItClient\|GrabzIt\." --include="*.cs" .
# Find callback handlers
grep -r "GrabzIt\|grabzit" --include="*.ashx" --include="*.aspx" --include="*.cs" .
# Find configuration
grep -r "APPLICATION_KEY\|APPLICATION_SECRET\|grabzit" --include="*.config" --include="*.json" .
# FindGrabzItclient usage
grep -r "GrabzItClient\|GrabzIt\." --include="*.cs" .
# Find callback handlers
grep -r "GrabzIt\|grabzit" --include="*.ashx" --include="*.aspx" --include="*.cs" .
# Find configuration
grep -r "APPLICATION_KEY\|APPLICATION_SECRET\|grabzit" --include="*.config" --include="*.json" .
Zmiany w pakiecie NuGet
# Remove GrabzIt
dotnet remove package GrabzIt
# Install IronPDF
dotnet add package IronPdf
# Remove GrabzIt
dotnet remove package GrabzIt
# Install IronPDF
dotnet add package IronPdf
Szybki start – migracja
Krok 1: Zaktualizuj konfigurację licencji
Przed (GrabzIt):
GrabzIt wymaga klucza aplikacji i tajnego kodu dla każdego uruchomienia klienta:
var grabzIt = new GrabzItClient("YOUR_APPLICATION_KEY", "YOUR_APPLICATION_SECRET");
var grabzIt = new GrabzItClient("YOUR_APPLICATION_KEY", "YOUR_APPLICATION_SECRET");
Dim grabzIt As New GrabzItClient("YOUR_APPLICATION_KEY", "YOUR_APPLICATION_SECRET")
Po (IronPDF):
// Set once at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Then create renderer without credentials
var renderer = new ChromePdfRenderer();
// Set once at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Then create renderer without credentials
var renderer = new ChromePdfRenderer();
Imports IronPdf
' Set once at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
' Then create renderer without credentials
Dim renderer As New ChromePdfRenderer()
Krok 2: Zaktualizuj importy przestrzeni nazw
// Before (GrabzIt)
using GrabzIt;
using GrabzIt.Parameters;
// After (IronPDF)
using IronPdf;
// Before (GrabzIt)
using GrabzIt;
using GrabzIt.Parameters;
// After (IronPDF)
using IronPdf;
Imports IronPdf
Kompletna dokumentacija API
Mapowanie GrabzItClient do IronPDF
| MetodaGrabzIt | Odpowiednik IronPDF |
|---|---|
new GrabzItClient(key, secret) |
new ChromePdfRenderer() |
HTMLToPDF(html) |
renderer.RenderHtmlAsPdf(html) |
URLToPDF(url) |
renderer.RenderUrlAsPdf(url) |
HTMLToImage(html) |
pdf.ToBitmap() |
Save(callbackUrl) |
pdf.SaveAs(path) |
SaveTo(filePath) |
pdf.SaveAs(filePath) |
GetResult(id) |
Nie dotyczy |
GetStatus(id) |
Nie dotyczy |
Mapowanie PDFOptions do RenderingOptions
| GrabzIt PDFOptions | Właściwości IronPDF |
|---|---|
PageSize (A4, Letter) |
RenderingOptions.PaperSize |
CustomId |
Nie dotyczy |
MarginTop |
RenderingOptions.MarginTop |
MarginBottom |
RenderingOptions.MarginBottom |
Mapowanie opcji obrazu do IronPDF
| GrabzIt ImageOptions | Odpowiednik IronPDF |
|---|---|
Format (png, jpg) |
bitmap.Save(path, ImageFormat.Png) |
Width |
RenderingOptions.ViewPortWidth |
Height |
RenderingOptions.ViewPortHeight |
Przykłady migracji kodu
Przykład 1: Konwersja HTML do PDF
Przed (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
Po (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
Różnica jest znaczna:GrabzItwymaga poświadczeń API (YOUR_APPLICATION_KEY, YOUR_APPLICATION_SECRET), tworzy obiekt PDFOptions z niestandardowym ID, a wynik to PDF oparty na obrazach wysyłany przez zewnętrzne serwery. ChromePdfRendererIronPDF generuje prawdziwy PDF wektorowy lokalnie z wybieralnym tekstem—bez poświadczeń, bez wywołań sieciowych, bez wywołań zwrotnych. Dodatkowe opcje renderowania można znaleźć w dokumentacji dotyczącej konwersji HTML do PDF.
Przykład 2: Konwersja adresów URL do formatu PDF
Przed (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
Po (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
GrabzIt wymaga skonfigurowania PageSize.A4 przez obiekt opcji i uwierzytelnienia z zewnętrznymi serwerami. Metoda RenderUrlAsPdf()IronPDF akceptuje bezpośrednio URL i renderuje go lokalnie, używając pełnego silnika Chromium z pełnym wsparciem dla CSS i JavaScript. Dowiedz się więcej o konwersji adresów URL do formatu PDF.
Przykład 3: Konwersja HTML na obraz
Przed (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
Po (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
GrabzIt udostępnia dedykowaną metodę HTMLToImage() z ImageOptions do konfiguracji formatu, szerokości i wysokości.IronPDF osiąga ten sam rezultat, najpierw renderując HTML do PDF za pomocą RenderHtmlAsPdf(), a następnie konwertując na bitmapę za pomocą ToBitmap(). Takie podejście pozwala uzyskać zarówno plik PDF, jak i obraz w wyniku jednej operacji renderowania.
Ważne uwagi dotyczące migracji
Nie są wymagane żadne działania zwrotne
Najważniejszą zmianą architektoniczną jest całkowite wyeliminowanie procedur obsługi wywołań zwrotnych:
// GrabzIt: Async callback pattern
grabzIt.HTMLToPDF(html, options);
grabzIt.Save("https://myserver.com/grabzit-callback"); // Wait for callback...
// Callback handler (separate endpoint)
public class GrabzItHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
string id = context.Request.QueryString["id"];
GrabzItClient grabzIt = new GrabzItClient("APP_KEY", "APP_SECRET");
GrabzItFile file = grabzIt.GetResult(id);
file.Save("output.pdf");
}
}
// IronPDF: Synchronous - result immediately available
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf"); // Done! Nie callback needed.
// GrabzIt: Async callback pattern
grabzIt.HTMLToPDF(html, options);
grabzIt.Save("https://myserver.com/grabzit-callback"); // Wait for callback...
// Callback handler (separate endpoint)
public class GrabzItHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
string id = context.Request.QueryString["id"];
GrabzItClient grabzIt = new GrabzItClient("APP_KEY", "APP_SECRET");
GrabzItFile file = grabzIt.GetResult(id);
file.Save("output.pdf");
}
}
// IronPDF: Synchronous - result immediately available
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf"); // Done! Nie callback needed.
Imports System.Web
' GrabzIt: Async callback pattern
grabzIt.HTMLToPDF(html, options)
grabzIt.Save("https://myserver.com/grabzit-callback") ' Wait for callback...
' Callback handler (separate endpoint)
Public Class GrabzItHandler
Implements IHttpHandler
Public Sub ProcessRequest(context As HttpContext) Implements IHttpHandler.ProcessRequest
Dim id As String = context.Request.QueryString("id")
Dim grabzIt As New GrabzItClient("APP_KEY", "APP_SECRET")
Dim file As GrabzItFile = grabzIt.GetResult(id)
file.Save("output.pdf")
End Sub
Public ReadOnly Property IsReusable As Boolean Implements IHttpHandler.IsReusable
Get
Return False
End Get
End Property
End Class
' IronPDF: Synchronous - result immediately available
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf") ' Done! No callback needed.
Usuń wszystkie obsługiwacze wywołań zwrotnych GrabzIt (.ashx pliki, punkty końcowe obsługi, konfiguracja webhooks) po migracji.
Pliki PDF w formacie True Vector
GrabzIt tworzy pliki PDF oparte na obrazach, w których tekst nie jest zaznaczalny.IronPDF generuje prawdziwe pliki PDF wektorowe:
// With IronPDF, text extraction works natively
var pdf = PdfDocument.FromFile("document.pdf");
string text = pdf.ExtractAllText(); // Works without OCR!
// With IronPDF, text extraction works natively
var pdf = PdfDocument.FromFile("document.pdf");
string text = pdf.ExtractAllText(); // Works without OCR!
Imports IronPdf
' With IronPDF, text extraction works natively
Dim pdf = PdfDocument.FromFile("document.pdf")
Dim text As String = pdf.ExtractAllText() ' Works without OCR!
Więcej szczegółów można znaleźć w dokumentacji dotyczącej ekstrakcji tekstu.
Mniejsze rozmiary plików
Pliki PDF oparte na wektórach są zazwyczaj 5–10 razy mniejsze niż pliki PDF oparte na obrazach generowane przez GrabzIt. Poprawia to koszty przechowywania, czas pobierania oraz możliwość wysyłania załączników w wiadomościach e-mail.
Usuń poświadczenia API
GrabzIt wymaga danych uwierzytelniających API dla każdej operacji:
// Remove these from configuration
// YOUR_APPLICATION_KEY
// YOUR_APPLICATION_SECRET
// Remove these from configuration
// YOUR_APPLICATION_KEY
// YOUR_APPLICATION_SECRET
IronPDF wykorzystuje pojedynczy klucz licencyjny ustawiany jednorazowo podczas uruchamiania aplikacji — nie wymaga uwierzytelniania przy każdym żądaniu.
Rozwiązywanie problemów
Problem 1: Nie znaleziono GrabzItClient
Problem: Po usunięciu GrabzIt, referencje GrabzItClient powodują błędy kompilacji.
Rozwiązanie: Zastąp ChromePdfRenderer:
// Remove:
// var grabzIt = new GrabzItClient("KEY", "SECRET");
// Replace with:
var renderer = new ChromePdfRenderer();
// Remove:
// var grabzIt = new GrabzItClient("KEY", "SECRET");
// Replace with:
var renderer = new ChromePdfRenderer();
' Remove:
' Dim grabzIt = New GrabzItClient("KEY", "SECRET")
' Replace with:
Dim renderer = New ChromePdfRenderer()
Problem 2: Nie znaleziono opcji PDFOptions
Problem: Klasa PDFOptions nie istnieje w IronPDF.
Rozwiązanie: Użyj właściwości RenderingOptions:
// GrabzIt
var options = new PDFOptions();
options.PageSize = PageSize.A4;
// IronPDF
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
// GrabzIt
var options = new PDFOptions();
options.PageSize = PageSize.A4;
// IronPDF
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
' GrabzIt
Dim options As New PDFOptions()
options.PageSize = PageSize.A4
' IronPDF
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
Problem 3: Nadal odwołuje się do procedur obsługi wywołań zwrotnych
Problem: Aplikacja oczekuje punktów końcowych wywołania zwrotnego.
Rozwiązanie: Całkowicie usunąć infrastrukturę wywołań zwrotnych.IronPDF zwraca wyniki synchronicznie — nie są potrzebne webhooki.
Problem 4: Nie znaleziono opcji ImageOptions
Problem: Klasa ImageOptions nie istnieje w IronPDF.
Rozwiązanie: Najpierw wygeneruj plik PDF, a następnie dokonaj konwersji:
// GrabzIt
var options = new ImageOptions();
options.Format = ImageFormat.png;
grabzIt.HTMLToImage(html, options);
// IronPDF
var pdf = renderer.RenderHtmlAsPdf(html);
var images = pdf.ToBitmap();
images[0].Save("output.png", System.Drawing.Imaging.ImageFormat.Png);
// GrabzIt
var options = new ImageOptions();
options.Format = ImageFormat.png;
grabzIt.HTMLToImage(html, options);
// IronPDF
var pdf = renderer.RenderHtmlAsPdf(html);
var images = pdf.ToBitmap();
images[0].Save("output.png", System.Drawing.Imaging.ImageFormat.Png);
' GrabzIt
Dim options As New ImageOptions()
options.Format = ImageFormat.png
grabzIt.HTMLToImage(html, options)
' IronPDF
Dim pdf = renderer.RenderHtmlAsPdf(html)
Dim images = pdf.ToBitmap()
images(0).Save("output.png", System.Drawing.Imaging.ImageFormat.Png)
Lista kontrolna migracji
Przed migracją
- Sporządź spis wszystkich wywołań APIGrabzItw kodzie źródłowym
- Zidentyfikuj procedury obsługi wywołań zwrotnych i punkty końcowe webhooków
- Opis aktualnych opcji i szablonów GrabzIt
- Uzyskaj klucz licencyjny IronPDF
- Plan wycofania obsługi wywołań zwrotnych
Migracja kodu
- Zainstaluj pakiet NuGet IronPDF:
dotnet add package IronPdf - Usuń pakiet NuGet GrabzIt:
dotnet remove package GrabzIt - Zastąp
GrabzItClientprzezChromePdfRenderer - Konwertuj
HTMLToPDF()naRenderHtmlAsPdf() - Konwertuj
URLToPDF()naRenderUrlAsPdf() - Zastąp
Save(callback)przezSaveAs(path) - Zaktualizuj opcje z
PDFOptionsnaRenderingOptions
Migracja infrastruktury
- Usuń pliki obsługiwaczy wywołań zwrotnych (
.ashx, itd.) - Usuń klucze APIGrabzItz konfiguracji
- Usuń konfigurację adresu URL webhooka
- Dodaj klucz licencyjny IronPDF do konfiguracji
- Usuń kod sprawdzania dostępności/statusu
Testowanie
- Przetestuj konwersję HTML do PDF
- Przetestuj konwersję adresu URL do formatu PDF
- Sprawdź, czy tekst jest zaznaczalny w plikach PDF wynikowych
- Wypróbuj, czy wyciąganie tekstu działa (bez OCR)
- Sprawdź, czy rozmiary plików są mniejsze
- Test wydajności bez opóźnień sieciowych
Po migracji
- Anuluj subskrypcję GrabzIt
- Kod obsługi wywołania zwrotnego archiwum
- Aktualizacja dokumentacji
- Monitoruj wszelkie błędy związane z GrabzIt

