Przejdź do treści stopki
PRZEWODNIKI MIGRACJI

Jak przeprowadzić migrację z GrabzIt do IronPDF w języku C#

Przejście z GrabzIt naIronPDFzmienia 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ść z GrabzIt na 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:

  1. Pliki PDF oparte na obrazach: GrabzIt tworzy 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.

  2. Przetwarzanie zewnętrzne: Cała treść jest wysyłana do serwerów GrabzIt w 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ę.

  3. Złożoność wywołań zwrotnych: GrabzIt wykorzystuje 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.

  4. 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.

  5. 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.

  6. Większe rozmiary plików: Pliki PDF oparte na obrazach są znacznie większe niż pliki PDF oparte na wektorach, często nawet 5–10 razy.

  7. Zależność od sieci: Nie można generować plików PDF bez połączenia z Internetem, co uniemożliwia pracę w trybie offline.

  8. Opóźnienie: Każde wygenerowanie pliku PDF wymaga komunikacji sieciowej z serwerami zewnętrznymi, co powoduje opóźnienie rzędu 500 ms–5 s.

Porównanie GrabzIt i 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

Dla zespołów planujących wdrożenie .NET 10 i C# 14 w latach 2025 i 2026,IronPDFzapewnia przyszłościową podstawę z lokalnym przetwarzaniem, które natywnie integruje się z nowoczesnymi wzorcami .NET.


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 Low
Rozmiar strony/marginesy Low
Obsługa wywołań zwrotnych Low
Znaki wodne Low
Nagłówki/stopki Medium
Klucze uwierzytelniające Bardzo niski

Zmiana paradygmatu

Podstawową zmianą w tej migracji GrabzIt jest 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

  1. Wersja .NET:IronPDFobsługuje .NET Framework 4.6.2+ oraz .NET Core 3.1+ / .NET 5/6/7/8/9+
  2. Klucz licencyjny: Uzyskaj klucz licencyjnyIronPDFna stronie ironpdf.com
  3. 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

# Find GrabzIt client 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" .
# Find GrabzIt client 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" .
SHELL

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
SHELL

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

Po (IronPDF):

// Set once at application startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY";

// Then create renderer without credentials
var renderer = new ChromePdfRenderer();
// Set once at application startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY";

// Then create renderer without credentials
var renderer = new ChromePdfRenderer();
' Set once at application startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY"

' Then create renderer without credentials
Dim renderer As New ChromePdfRenderer()
$vbLabelText   $csharpLabel

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

Kompletna dokumentacija API

Mapowanie GrabzItClient do IronPDF

Metoda GrabzIt OdpowiednikIronPDF
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ściIronPDF
PageSize (A4, Letter) RenderingOptions.PaperSize
CustomId Nie dotyczy
MarginTop RenderingOptions.MarginTop
MarginBottom RenderingOptions.MarginBottom

Mapowanie opcji obrazu do IronPDF

GrabzIt ImageOptions OdpowiednikIronPDF
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
$vbLabelText   $csharpLabel

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

Różnica jest znacząca: GrabzIt wymaga danych uwierzytelniających API (YOUR_APPLICATION_KEY, YOUR_APPLICATION_SECRET), tworzy obiekt PDFOptions z niestandardowym identyfikatorem, a wynikiem jest plik PDF oparty na obrazach, wysyłany przez serwery zewnętrzne. ChromePdfRenderer firmyIronPDFgeneruje lokalnie prawdziwy wektorowy plik PDF z możliwością zaznaczania tekstu — bez danych uwierzytelniających, bez połączeń 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
$vbLabelText   $csharpLabel

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

GrabzIt wymaga skonfigurowania PageSize.A4 za pomocą obiektu opcji oraz uwierzytelnienia na serwerach zewnętrznych. Metoda RenderUrlAsPdf() firmyIronPDFakceptuje adres URL bezpośrednio i renderuje go lokalnie przy użyciu pełnego silnika Chromium z pełną obsługą 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
$vbLabelText   $csharpLabel

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

GrabzIt udostępnia dedykowaną metodę HTMLToImage() z ImageOptions do konfiguracji formatu, szerokości i wysokości.IronPDFosiąga ten sam efekt, najpierw renderując HTML do formatu PDF za pomocą RenderHtmlAsPdf(), a następnie konwertując go 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.
$vbLabelText   $csharpLabel

Po migracji usuń wszystkie procedury obsługi wywołań zwrotnych GrabzIt (pliki .ashx, punkty końcowe procedur obsługi, konfiguracja webhooków).

Pliki PDF w formacie True Vector

GrabzIt tworzy pliki PDF oparte na obrazach, w których tekst nie jest zaznaczalny.IronPDFgeneruje 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!
$vbLabelText   $csharpLabel

Więcej szczegółów można znaleźć w dokumentacji dotyczącej ekstrakcji tekstu.

Mniejsze rozmiary plików

Pliki PDF oparte na wektorach 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
$vbLabelText   $csharpLabel

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 odniesienia GrabzItClient powodują błędy kompilacji.

Rozwiązanie: Zastąp przez 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()
$vbLabelText   $csharpLabel

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

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.IronPDFzwraca 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)
$vbLabelText   $csharpLabel

Lista kontrolna migracji

Przed migracją

  • Sporządź spis wszystkich wywołań API GrabzIt w 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 pakietIronPDFNuGet: dotnet add package IronPdf
  • Usuń pakiet NuGet GrabzIt: dotnet remove package GrabzIt
  • Zastąp GrabzItClient przez ChromePdfRenderer
  • Zamień HTMLToPDF() na RenderHtmlAsPdf()
  • Zamień URLToPDF() na RenderUrlAsPdf()
  • Zastąp Save(callback) przez SaveAs(path)
  • Zaktualizuj opcje z PDFOptions na RenderingOptions

Migracja infrastruktury

  • Usuń pliki obsługi wywołań zwrotnych (.ashx itp.)
  • Usuń klucze API GrabzIt z konfiguracji
  • Usuń konfigurację adresu URL webhooka
  • Dodaj klucz licencyjnyIronPDFdo 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

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podrę...

Czytaj więcej

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie