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

Cómo migrar de GrabzIt a IronPDF en C#

Migrar de GrabzIta IronPDF: Guía completa de migración a 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. PDFs basados en imágenes: GrabzItcrea PDF basados en capturas de pantalla en los que el texto no se puede seleccionar, básicamente 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 problemas de privacidad y cumplimiento de la normativa en relación con los datos confidenciales. El contenido HTML sale de su infraestructura.

  3. Complejidad del Callback: GrabzItutiliza un modelo de callback asíncrono 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 caro a gran escala. Cada generación de PDF conlleva un coste.

  5. Sin búsqueda de texto: Dado que los PDF se basan 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ño de archivo más grande: Los PDF basados en imágenes son significativamente más grandes que los PDF basados en vectores, a menudo entre 5 y 10 veces más grandes.

  7. Dependencia de la red: No se pueden generar PDF sin conexión a Internet, lo que imposibilita los escenarios offline.

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

Comparación entre GrabzIte IronPDF

AspectoGrabzItIronPDF
Tipo de PDFBasada en imágenes (captura de pantalla)PDF vectorial real
Selección de textoNo es posibleSelección de texto completo
Búsqueda de textoRequiere OCRBúsqueda nativa
Lugar de procesamientoServidores externosLocal/en proceso
PrivacidadDatos enviados externamenteLos datos permanecen locales
LatenciaRed de ida y vuelta (500ms-5s)Procesamiento local (~100ms)
Modelo de preciosPor capturaLicencia por desarrollador
Capacidad offlineNo
Tamaño del archivoGrande (datos de imagen)Pequeño (datos vectoriales)
Se requiere devolución de llamadaSí (async)No (sync/async)
Soporte CSS/JSLimitadoMotor 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ísticaComplejidad de la migraciónNotas
HTML a PDFMuy bajoSustitución directa de métodos
URL a PDFMuy bajoSustitución directa de métodos
HTML a imagenBajoRenderizar PDF y luego convertir
Tamaño de página/MargenesBajoMapeo de propiedades
Controladores de devolución de llamadaBajoElimínelas por completo
Marcas de aguaBajoEnfoque basado en HTML
Encabezados/pies de páginaMedioConversión de plantilla a HTML
Claves de autenticaciónMuy bajoQuitar las llaves de GrabzIt

Cambio de paradigma

El cambio fundamental en esta migración de GrabzItes de procesamiento asíncrono en la nube basado en callbacks a generación asíncrona 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. .NET Version: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. Plan de eliminación de infraestructura: Documentar los controladores de devolución de llamada 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 GrabzItEquivalente de IronPDFNotas
<código>new GrabzItClient(key, secret)</código<código>new ChromePdfRenderer()</códigoNo se necesita autenticación
HTMLToPDF(html)renderer.RenderHtmlAsPdf(html)Devuelve el PDF directamente
<código>URLToPDF(url)</código<código>renderer.RenderUrlAsPdf(url)</códigoDevuelve el PDF directamente
HTMLToImage(html)<código>pdf.ToBitmap()</códigoRenderizar y luego convertir
Guardar(callbackUrl)<código>pdf.SaveAs(ruta)</códigoResultado inmediato
<código>SaveTo(filePath)</código<código>pdf.SaveAs(filePath)</códigoMisma funcionalidad
<código>GetResult(id)</códigoN/ANo se necesitan callbacks
<código>GetStatus(id)</códigoN/AFuncionamiento síncrono

Mapeo de PDFOptions a RenderingOptions

GrabzItPDFOpcionesPropiedad de IronPDFNotas
Tamaño de página (A4, Carta)<código>RenderingOptions.PaperSize</códigoUtilizar el enum PdfPaperSize
<código>CustomId</códigoN/ANo es necesario
<código>MarginTop</código<código>RenderingOptions.MarginTop</códigoMisma unidad (mm)
MargenInferior<código>RenderingOptions.MarginBottom</códigoMisma unidad (mm)

Mapeo de ImageOptions a IronPDF

GrabzItImageOptionsEquivalente de IronPDFNotas
Formato (png, jpg)<código>bitmap.Save(path, ImageFormat.Png)</códigoDespués de ToBitmap()
Ancho<código>RenderingOptions.ViewPortWidth</códigoAnchura de la ventana
Altura<código>RenderingOptions.ViewPortHeight</códigoAltura 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: Tras eliminar GrabzIt, las referencias GrabzItClient provocan errores de compilación.

Solución: Sustituir por 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: Utilizar 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: Renderiza primero a PDF y luego convierte:

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

  • [ ] Inventario de todas las llamadas a la API de GrabzIten el código base
  • [ ] Identificar controladores de devolución de llamada y puntos finales de webhook
  • [ ] Documentar las opciones y plantillas actuales de GrabzIt
  • [ ] Obtener la clave de licencia de IronPDF
  • [ ] Planificar el desmantelamiento del manejador de callback

Migración de código

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

Migración de infraestructuras

  • [ ] Eliminar archivos de control de llamadas de retorno (.ashx, etc.)
  • [ ] Eliminar las claves API de GrabzItde la configuración
  • [ ] Eliminar la configuración de URL de webhook
  • [ ] Añadir clave de licenciaIronPDFa la configuración
  • [ ] Eliminar el código de sondeo/comprobación de estado

Pruebas

  • [ ] Prueba de conversión de HTML a PDF
  • [ ] Prueba de conversión de URL a PDF
  • [ ] Comprobar que el texto se puede seleccionar en los PDF de salida
  • [ ] Prueba de extracción de texto (sin OCR)
  • [ ] Comprobar que el tamaño de los archivos es menor
  • [Prueba de rendimiento sin latencia de red

Posmigración

  • [ ] Cancelar 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

Conclusión

La migración de GrabzItaIronPDFproporciona varias mejoras significativas para las aplicaciones .NET. En lugar de capturas de pantalla basadas en imágenes, se obtienen verdaderos PDF vectoriales con texto seleccionable que permite realizar búsquedas. El procesamiento local elimina las dependencias de servidores externos, los problemas de privacidad y la latencia de la red. La API sincrónica elimina por completo la complejidad de las devoluciones de llamada: elimine los controladores de webhook y el código de sondeo de estado.

Los cambios clave en esta migración son:

  1. Tipo de PDF: Capturas de pantalla basadas en imágenes → PDF vectoriales reales
  2. Procesamiento: Servidores externos → Local en proceso
  3. Arquitectura: Devoluciones de llamada asíncronas → Resultados síncronos
  4. Tamaño de archivo: Datos de imágenes grandes → Datos vectoriales pequeños
  5. Texto: Requiere OCR → Búsqueda nativa

Explore la documentación completa de IronPDF, tutoriales y referencia API para acelerar su migración a 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