Saltar al pie de página
GUíAS DE MIGRACIóN

Cómo migrar de GrabzIt a IronPDF en C#

La migración de GrabzItaIronPDFtransforma su flujo de trabajo PDF .NET de un servicio de captura de pantalla basado en la nube con complejidad de devolución de llamada a una biblioteca en proceso que genera verdaderos PDF vectoriales con texto seleccionable que permite búsquedas. Esta guía proporciona una ruta de migración completa y paso a paso que elimina las dependencias de servidores externos, los controladores de devolución de llamada y los precios por captura para desarrolladores .NET profesionales.

Por qué migrar de GrabzIta IronPDF

El problema de la arquitectura GrabzIt

GrabzIt es un servicio de captura de pantalla y PDF basado en la nube. Aunque resulta práctico para integraciones rápidas, tiene limitaciones arquitectónicas fundamentales:

  1. PDF basados en imágenes: GrabzItcrea PDF basados en capturas de pantalla en los que no se puede seleccionar texto; esencialmente, imágenes envueltas en formato PDF. Se trata de una limitación fundamental para cualquier caso de uso que requiera manipulación de texto o accesibilidad.

  2. Procesamiento externo: todo el contenido se envía a los servidores de GrabzItpara su procesamiento, lo que genera preocupaciones sobre la privacidad y el cumplimiento de los datos confidenciales. El contenido HTML sale de su infraestructura.

  3. Complejidad de devolución de llamada: GrabzItutiliza un modelo de devolución de llamada asincrónica que requiere una infraestructura de manejo de webhooks. Debe configurar puntos finales para recibir resultados, lo que añade complejidad arquitectónica.

  4. Precios por captura: el modelo de pago por uso puede resultar costoso a gran escala. Cada generación de PDF conlleva un coste.

  5. Sin búsqueda de texto: dado que los PDF están basados en imágenes, la búsqueda y extracción de texto no funcionan sin OCR, lo que supone un paso y un coste adicionales.

  6. Tamaños de archivo más grandes: los PDF basados en imágenes son significativamente más grandes que los PDF basados en vectores, a menudo entre 5 y 10 veces el tamaño.

  7. Dependencia de la red: no se pueden generar archivos PDF sin una conexión a Internet, lo que hace imposible trabajar sin conexión.

  8. Latencia: cada generación de PDF requiere un viaje de ida y vuelta de red a servidores externos, lo que agrega una latencia de 500 ms a 5 s.

Comparación entre GrabzIte IronPDF

Aspecto GrabzIt IronPDF
Tipo de PDF Basada en imágenes (captura de pantalla) PDF vectorial real
Selección de texto No es posible Selección de texto completo
Búsqueda de texto Requiere OCR Búsqueda nativa
Lugar de procesamiento Servidores externos Local/en proceso
Privacidad Datos enviados externamente Los datos permanecen locales
Latencia Red de ida y vuelta (500ms-5s) Procesamiento local (~100ms)
Modelo de precios Por captura Licencia por desarrollador
Capacidad offline No
Tamaño del archivo Grande (datos de imagen) Pequeño (datos vectoriales)
Se requiere devolución de llamada Sí (async) No (sync/async)
Soporte CSS/JS Limitado Motor Chromium completo

Para los equipos que planifican la adopción de .NET 10 y C# 14 hasta 2025 y 2026,IronPDFproporciona una base preparada para el futuro con un procesamiento local que se integra de forma nativa con los patrones modernos de .NET.


Evaluación de la complejidad de la migración

Esfuerzo estimado por función

Característica Complejidad de la migración Notas
HTML a PDF Muy bajo Sustitución directa de métodos
URL a PDF Muy bajo Sustitución directa de métodos
HTML a imagen Bajo Renderizar PDF y luego convertir
Tamaño de página/Margenes Bajo Mapeo de propiedades
Controladores de devolución de llamada Bajo Elimínelas por completo
Marcas de agua Bajo Enfoque basado en HTML
Encabezados/pies de página Medio Conversión de plantilla a HTML
Claves de autenticación Muy bajo Quitar las llaves de GrabzIt

Cambio de paradigma

El cambio fundamental en esta migración de GrabzItes del procesamiento en la nube basado en devolución de llamadas asincrónicas a la generación sincrónica en proceso:

using IronPdf; GrabzIt: Enviar HTML → Esperar callback → Recuperar resultado del servidor IronPDF: Render HTML → Obtener PDF inmediatamente using IronPdf;


Antes de empezar

Prerrequisitos

  1. Versión .NET:IronPDFes compatible con .NET Framework 4.6.2+ y .NET Core 3.1+ / .NET 5/6/7/8/9+
  2. Clave de licencia: Obtenga su clave de licencia deIronPDFen ironpdf.com
  3. Planifique la eliminación de la infraestructura: documente los controladores de devolución de llamadas y los puntos finales de webhook para el desmantelamiento

Identificar todos los usos de GrabzIt

using IronPdf;bash

Find GrabzItclient 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" . using IronPdf;

Cambios en el paquete NuGet

using IronPdf;bash

Remove GrabzIt

dotnet remove package GrabzIt

Install IronPDF

dotnet add package IronPdf using IronPdf;


Inicio rápido de la migración

Paso 1: Actualizar la configuración de la licencia

Antes (GrabzIt):

GrabzIt requiere clave de aplicación y secreto para cada instanciación de cliente:

using IronPdf;csharp var grabzIt = new GrabzItClient("YOUR_APPLICATION_KEY", "YOUR_APPLICATION_SECRET"); using IronPdf;

Después (IronPDF):

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

// Then create renderer without credentials var renderer = new ChromePdfRenderer(); using IronPdf;

Paso 2: Actualizar las importaciones de espacios de nombres

using IronPdf;csharp // Before (GrabzIt) using GrabzIt; using GrabzIt.Parameters;

// After (IronPDF) using IronPdf; using IronPdf;


Referencia completa de la API

Mapeo de GrabzItClient a IronPDF

Método GrabzIt Equivalente de IronPDF Notas
<código>new GrabzItClient(key, secret) <código>new ChromePdfRenderer() No se necesita autenticación
HTMLToPDF(html) renderer.RenderHtmlAsPdf(html) Devuelve el PDF directamente
<código>URLToPDF(url)` <código>renderer.RenderUrlAsPdf(url) Devuelve el PDF directamente
HTMLToImage(html) <código>pdf.ToBitmap()` Renderizar y luego convertir
Guardar(callbackUrl) <código>pdf.SaveAs(ruta)` Resultado inmediato
<código>SaveTo(filePath) <código>pdf.SaveAs(filePath) Misma funcionalidad
<código>GetResult(id) N/A No se necesitan callbacks
<código>GetStatus(id) N/A Funcionamiento síncrono

Mapeo de PDFOptions a RenderingOptions

GrabzItPDFOpciones Propiedad de IronPDF Notas
Tamaño de página (A4, Carta) <código>RenderingOptions.PaperSize| Utilizar el enumPdfPaperSize`
<código>CustomId` N/A No es necesario
<código>MarginTop <código>RenderingOptions.MarginTop Misma unidad (mm)
MargenInferior <código>RenderingOptions.MarginBottom` Misma unidad (mm)

Mapeo de ImageOptions a IronPDF

GrabzItImageOptions Equivalente de IronPDF Notas
Formato (png, jpg) <código>bitmap.Save(path, ImageFormat.Png)| Después deToBitmap()`
Ancho <código>RenderingOptions.ViewPortWidth` Anchura de la ventana
Altura <código>RenderingOptions.ViewPortHeight` Altura de la ventana

Ejemplos de migración de código

Ejemplo 1: Conversión de HTML a PDF

Antes (GrabzIt):

using IronPdf;csharp // 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");
}

} using IronPdf;

Después (IronPDF):

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

class Program { static void Main() { var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf("

Hello World

"); pdf.SaveAs("output.pdf"); } } using IronPdf;

La diferencia es sustancial: GrabzItrequiere credenciales de API (YOUR_APPLICATION_KEY, YOUR_APPLICATION_SECRET), crea un objeto PDFOptions con un ID personalizado, y el resultado es un PDF basado en imágenes que se envía a través de servidores externos. El ChromePdfRenderer deIronPDFgenera un verdadero PDF vectorial localmente con texto seleccionable, sin credenciales, sin llamadas de red, sin devoluciones de llamada. Consulte la documentación HTML a PDF para obtener más opciones de conversión.

Ejemplo 2: Conversión de URL a PDF

Antes (GrabzIt):

using IronPdf;csharp // 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");
}

} using IronPdf;

Después (IronPDF):

using IronPdf;csharp // 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"); } } using IronPdf;

GrabzIt requiere configurar PageSize.A4 a través del objeto options y autenticarse con servidores externos. El método RenderUrlAsPdf() deIronPDFacepta la URL directamente y la renderiza localmente utilizando un motor Chromium completo con soporte completo de CSS y JavaScript. Más información sobre Conversión de URL a PDF.

Ejemplo 3: Conversión de HTML a imagen

Antes (GrabzIt):

using IronPdf;csharp // 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");
}

} using IronPdf;

Después (IronPDF):

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

class Program { static void Main() { var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf("

Hello World

"); var images = pdf.ToBitmap(); images[0].Save("output.png", System.Drawing.Imaging.ImageFormat.Png); } } using IronPdf;

GrabzIt proporciona un método HTMLToImage() dedicado con ImageOptions para la configuración del formato, la anchura y la altura.IronPDFconsigue el mismo resultado convirtiendo primero HTML a PDF mediante RenderHtmlAsPdf() y, a continuación, convirtiendo a mapa de bits con ToBitmap(). Este enfoque le proporciona tanto el PDF como la imagen de salida a partir de una única operación de renderizado.


Notas de migración críticas

No se requieren callbacks

El cambio arquitectónico más significativo es la eliminación total de los gestores de retrollamadas:

using IronPdf;csharp // 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! No callback needed. using IronPdf;

Borra todos los manejadores de callback de GrabzIt (archivos .ashx, puntos finales de manejadores, configuración de webhooks) después de la migración.

Verdaderos PDF vectoriales

GrabzIt crea PDF basados en imágenes en los que el texto no se puede seleccionar.IronPDFgenera verdaderos PDF vectoriales:

using IronPdf;csharp // With IronPDF, text extraction works natively var pdf = PdfDocument.FromFile("document.pdf"); string text = pdf.ExtractAllText(); // Works without OCR! using IronPdf;

Consulte la documentación sobre extracción de texto para obtener más información.

Tamaño de archivo más pequeño

Los PDF basados en vectores suelen ser entre 5 y 10 veces más pequeños que los PDF basados en imágenes de GrabzIt. Esto mejora los costes de almacenamiento, los tiempos de descarga y la viabilidad de los archivos adjuntos por correo electrónico.

Quitar credenciales de API

GrabzIt requiere credenciales API para cada operación:

using IronPdf;csharp // Remove these from configuration // YOUR_APPLICATION_KEY // YOUR_APPLICATION_SECRET using IronPdf;

IronPDF utiliza una única clave de licencia que se establece una vez al iniciar la aplicación, sin autenticación por solicitud.


Solución de problemas

Número 1: GrabzItClient no se encuentra

Problema: después de eliminar GrabzIt, las referencias de GrabzItClient provocan errores de compilación.

Solución: Reemplazar con ChromePdfRenderer :

using IronPdf;csharp // Remove: // var grabzIt = new GrabzItClient("KEY", "SECRET");

// Replace with: var renderer = new ChromePdfRenderer(); using IronPdf;

Número 2: PDFOptions Not Found

Problema: la clase PDFOptions no existe en IronPDF.

Solución: utilice la propiedad RenderingOptions :

using IronPdf;csharp // GrabzIt var options = new PDFOptions(); options.PageSize = PageSize.A4;

// IronPDF renderer.RenderingOptions.PaperSize = PdfPaperSize.A4; using IronPdf;

Tema 3: Los manejadores de llamadas de retorno siguen siendo referenciados

Problema: la aplicación espera puntos finales de devolución de llamada.

Solución: eliminar por completo la infraestructura de devolución de llamada.IronPDFdevuelve los resultados de forma sincrónica, sin necesidad de webhooks.

Edición 4: ImageOptions Not Found

Problema: la clase ImageOptions no existe en IronPDF.

Solución: primero renderizar a PDF y luego convertir:

using IronPdf;csharp // 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); using IronPdf;


Lista de comprobación de la migración

Pre-Migración

  • Inventariar todas las llamadas API de GrabzIten el código base
  • Identificar controladores de devolución de llamadas y puntos finales de webhook
  • Documentar las opciones y plantillas actuales de GrabzIt
  • Obtener la clave de licencia de IronPDF
  • Planificar el desmantelamiento del controlador de devolución de llamadas

Migración de código

  • Instalar el paquete NuGet IronPdf: dotnet add package IronPdf
  • Eliminar el paquete NuGet de GrabzIt: dotnet remove package GrabzIt
  • Reemplace GrabzItClient con ChromePdfRenderer
  • Convertir HTMLToPDF() a RenderHtmlAsPdf()
  • Convertir URLToPDF() a RenderUrlAsPdf()
  • Reemplace Save(callback) con SaveAs(path)
  • Actualizar las opciones de PDFOptions a RenderingOptions

Migración de infraestructuras

  • Eliminar archivos del controlador de devolución de llamada ( .ashx , etc.)
  • Eliminar las claves API de GrabzItde la configuración
  • Eliminar la configuración de la URL del webhook
  • Agregar clave de licencia deIronPDFa la configuración
  • Eliminar el código de verificación de estado/sondeo

Pruebas

  • Prueba de conversión de HTML a PDF
  • Prueba de conversión de URL a PDF
  • Verificar que el texto sea seleccionable en los PDF de salida
  • Prueba de funcionamiento de la extracción de texto (sin OCR)
  • Verificar que los tamaños de los archivos sean más pequeños
  • Prueba de rendimiento sin latencia de red

Posmigración

  • Cancelar la suscripción a GrabzIt
  • Código del controlador de devolución de llamada de archivo
  • Actualización de la documentación
  • Supervisar cualquier error relacionado con GrabzIt

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más