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:
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.
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.
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.
Precios por captura: el modelo de pago por uso puede resultar caro a gran escala. Cada generación de PDF conlleva un coste.
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.
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.
Dependencia de la red: No se pueden generar PDF sin conexión a Internet, lo que imposibilita los escenarios offline.
- 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
| 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 | Sí |
| 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 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
- .NET Version:IronPDFes compatible con .NET Framework 4.6.2+ y .NET Core 3.1+ / .NET 5/6/7/8/9+
- Clave de licencia: Obtenga su clave de licencia deIronPDFen ironpdf.com
- 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 GrabzIt | Equivalente de IronPDF | Notas |
|---|---|---|
| <código>new GrabzItClient(key, secret)</código | <código>new ChromePdfRenderer()</código | No 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ódigo | Devuelve el PDF directamente |
HTMLToImage(html) | <código>pdf.ToBitmap()</código | Renderizar y luego convertir |
Guardar(callbackUrl) | <código>pdf.SaveAs(ruta)</código | Resultado inmediato |
| <código>SaveTo(filePath)</código | <código>pdf.SaveAs(filePath)</código | Misma funcionalidad |
| <código>GetResult(id)</código | N/A | No se necesitan callbacks |
| <código>GetStatus(id)</código | 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</código | Utilizar el enum PdfPaperSize |
| <código>CustomId</código | N/A | No es necesario |
| <código>MarginTop</código | <código>RenderingOptions.MarginTop</código | Misma unidad (mm) |
MargenInferior | <código>RenderingOptions.MarginBottom</código | Misma unidad (mm) |
Mapeo de ImageOptions a IronPDF
| GrabzItImageOptions | Equivalente de IronPDF | Notas |
|---|---|---|
Formato (png, jpg) | <código>bitmap.Save(path, ImageFormat.Png)</código | Después de ToBitmap() |
Ancho | <código>RenderingOptions.ViewPortWidth</código | Anchura de la ventana |
Altura | <código>RenderingOptions.ViewPortHeight</código | 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: 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
GrabzItClientporChromePdfRenderer - [ ] Convertir
HTMLToPDF()aRenderHtmlAsPdf() - [ ] Convertir
URLToPDF()aRenderUrlAsPdf() - [Reemplace
Save(callback)porSaveAs(path) - [Actualizar las opciones de
PDFOptionsaRenderingOptions
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:
- Tipo de PDF: Capturas de pantalla basadas en imágenes → PDF vectoriales reales
- Procesamiento: Servidores externos → Local en proceso
- Arquitectura: Devoluciones de llamada asíncronas → Resultados síncronos
- Tamaño de archivo: Datos de imágenes grandes → Datos vectoriales pequeños
- Texto: Requiere OCR → Búsqueda nativa
Explore la documentación completa de IronPDF, tutoriales y referencia API para acelerar su migración a GrabzIt.






