Cómo migrar de GemBox PDF a IronPDF en C#
Migrar de GemBox PDFa IronPDF: Guía completa de migración a C
La migración de GemBox PDFaIronPDFtransforma su flujo de trabajo PDF .NET de una construcción de documentos programática basada en coordenadas a una representación moderna basada en HTML/CSS. Esta guía proporciona una ruta de migración completa y paso a paso que elimina los límites de párrafos y simplifica la creación de documentos para desarrolladores .NET profesionales.
Por qué migrar de GemBox PDFa IronPDF
Los retos de GemBox PDF
GemBox PDF es un componente PDF .NET capaz, pero tiene limitaciones significativas que afectan al desarrollo en el mundo real:
Límite de 20 párrafos en la versión gratuita: La versión gratuita te limita a 20 párrafos, y las celdas de tabla cuentan para este límite. Una simple tabla de 10 filas y 5 columnas utiliza 50 "párrafos", lo que hace que la versión gratuita sea inutilizable incluso para documentos empresariales básicos.
Sin conversión de HTML a PDF: GemBox PDFrequiere la construcción programática de documentos. Hay que calcular las coordenadas y posicionar manualmente cada elemento, no hay una simple función de "renderizar este HTML".
Diseño basado en coordenadas: A diferencia de HTML/CSS, donde la maquetación fluye de forma natural, GemBox PDFrequiere calcular las posiciones X/Y exactas de cada elemento de texto, imagen y forma.
Conjunto de características limitado: En comparación con las bibliotecas PDF completas, GemBox PDFse centra en las operaciones básicas -leer, escribir, combinar, dividir- sin funciones avanzadas como el renderizado HTML o la compatibilidad con CSS modernas.
Sólo programática: Todo cambio de diseño requiere cambios en el código. ¿Quieres ajustar el espaciado? Recalcular coordenadas. ¿Desea un tamaño de fuente diferente? Ajusta todas las posiciones Y debajo.
Cuento de celdas de tabla: El límite de párrafos cuenta las celdas de la tabla, no solo los párrafos visibles. Esto hace que la versión gratuita sea prácticamente inútil para documentos con tablas.
- Curva de aprendizaje para el diseño: Los desarrolladores deben pensar en coordenadas en lugar de en el flujo del documento, lo que hace que tareas sencillas como "añadir un párrafo" sean sorprendentemente complejas.
Comparación entre GemBox PDFe IronPDF
| Aspecto | GemBox PDF | IronPDF |
|---|---|---|
| Límites de la versión gratuita | 20 párrafos (incluye celdas de tabla) | Sólo marca de agua, sin límites de contenido |
| HTML a PDF | No soportado | Motor Chromium completo |
| Método de maquetación | Manual basado en coordenadas | Diseño de flujo HTML/CSS |
| Tablas | Cuenta para el límite de párrafos | Uso ilimitado de tablas HTML |
| CSS moderno | No procede | Flexbox, Grid, animaciones CSS3 |
| Soporte de JavaScript | No procede | Ejecución completa de JavaScript |
| Cambios de diseño | Recalcular coordenadas | Editar HTML/CSS |
| Curva de aprendizaje | Sistema de coordenadas PDF | HTML/CSS (web familiar) |
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 que aprovecha las tecnologías web conocidas para la generación de PDF.
Evaluación de la complejidad de la migración
Esfuerzo estimado por función
| Característica | Complejidad de la migración | Notas |
|---|---|---|
| Cargar/guardar PDF | Muy bajo | Asignación directa de métodos |
| Fusionar PDF | Muy bajo | Asignación directa de métodos |
| Dividir PDF | Bajo | Manejo del índice de páginas |
| Extracción de Texto | Muy bajo | Asignación directa de métodos |
| Añadir texto | Medio | Coordinate → HTML |
| Tablas | Bajo | Manual → Tablas HTML |
| Imágenes | Bajo | Coordinate → HTML |
| Marcas de agua | Bajo | Diferentes API |
| Protección por contraseña | Medio | Estructura diferente |
| Campos de formulario | Medio | Diferencias entre API |
Cambio de paradigma
El mayor cambio en esta migración de GemBox PDFes el paso de maquetación basada en coordenadas a maquetación HTML/CSS:
using IronPdf; GemBox PDF: "Dibujar texto en la posición (100, 700)" IronPDF: "Renderiza este HTML con estilos CSS" using IronPdf;
Este cambio de paradigma es generalmente más fácil para los desarrolladores familiarizados con las tecnologías web, pero requiere pensar en los PDF de forma diferente.
Antes de empezar
Prerrequisitos
- .NET Version:IronPDFes compatible con .NET Framework 4.6.2+ y .NET Core 2.0+ / .NET 5/6/7/8/9+
- Clave de licencia: Obtenga su clave de licencia deIronPDFen ironpdf.com
- Backup: Crear una rama para el trabajo de migración
- Conocimientos de HTML/CSS: conocimientos básicos útiles, pero no obligatorios
Identifique todos los usos de GemBox PDF
using IronPdf;bash
Find all GemBox PDFreferences
grep -r "GemBox.Pdf|PdfDocument|PdfPage|PdfFormattedText|ComponentInfo.SetLicense" --include="*.cs" .
Find package references
grep -r "GemBox.Pdf" --include="*.csproj" . using IronPdf;
Cambios en el paquete NuGet
using IronPdf;bash
Remove GemBox PDF
dotnet remove package GemBox.Pdf
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 (GemBox PDF):
using IronPdf;csharp // Must call before any GemBox PDFoperations ComponentInfo.SetLicense("FREE-LIMITED-KEY"); // Or for professional: ComponentInfo.SetLicense("YOUR-PROFESSIONAL-LICENSE"); using IronPdf;
Después (IronPDF):
using IronPdf;csharp // Set once at application startup IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY";
// Or in appsettings.json: // { "IronPdf.License.LicenseKey": "YOUR-LICENSE-KEY" } using IronPdf;
Paso 2: Actualizar las importaciones de espacios de nombres
using IronPdf;csharp // Before (GemBox PDF) using GemBox.Pdf; using GemBox.Pdf.Content;
// After (IronPDF) using IronPdf; using IronPdf.Editing; using IronPdf;
Paso 3: Patrón básico de conversión
Antes (GemBox PDF):
using IronPdf;csharp using GemBox.Pdf; using GemBox.Pdf.Content;
ComponentInfo.SetLicense("FREE-LIMITED-KEY");
using (var document = new PdfDocument()) { var page = document.Pages.Add(); var formattedText = new PdfFormattedText() { Text = "Hello World", FontSize = 24 };
page.Content.DrawText(formattedText, new PdfPoint(100, 700));
document.Save("output.pdf");} using IronPdf;
Después (IronPDF):
using IronPdf;csharp using IronPdf;
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf("
Hello World
"); pdf.SaveAs("output.pdf"); using IronPdf;Diferencias Clave:
- No se necesitan cálculos de coordenadas
- HTML/CSS en lugar de diseño programático
- Sin límite de párrafos
- Código más sencillo y legible
Referencia completa de la API
Mapeo de espacios de nombres
| GemBox PDF | IronPDF |
|---|---|
GemBox.Pdf | <código>IronPDF</código |
| <código>GemBox.Pdf.Content</código | <código>IronPDF</código(el contenido es HTML) |
| <código>GemBox.Pdf.Seguridad</código | <código>IronPDF</código(Ajustes de seguridad) |
| <código>GemBox.Pdf.Forms</código | <código>IronPdf.Forms</código |
Mapeo de clases principales
| GemBox PDF | IronPDF | Descripción |
|---|---|---|
Documento PDF | Documento PDF | Clase de documento PDF principal |
Página PDF | <código>PdfDocument.Pages[i]</código> | Representación de la página |
| <código>ContenidoPdf</código | N/A (usar HTML) | Contenido de la página |
| <código>Texto con formato PDF</código | N/A (usar HTML) | Texto con formato |
PdfPoint | N/A (utilizar posicionamiento CSS) | Posición de las coordenadas |
| <código>ComponentInfo.SetLicense()</código | <código>IronPdf.License.LicenseKey</código> | Gestión de licencias |
Operaciones de documentos
| GemBox PDF | IronPDF | Notas |
|---|---|---|
nuevo PdfDocument() | nuevo PdfDocument() | Crear nuevo documento |
| <código>PdfDocument.Load(ruta)</código | <código>PdfDocument.FromFile(path)</código | Cargar desde archivo |
| <código>PdfDocument.Load(stream)</código | <código>PdfDocument.FromStream(stream)</código | Cargar desde stream |
| <código>document.Save(ruta)</código | <código>pdf.SaveAs(ruta)</código | Guardar en archivo |
| <código>document.Save(stream)</código | pdf.Stream o pdf.BinaryData | Obtener como flujo/bytes |
Operaciones de página
| GemBox PDF | IronPDF | Notas |
|---|---|---|
document.Pages.Add() | Creación mediante renderización HTML | Añadir nueva página |
document.Pages.Count | <código>pdf.PageCount</código | Número de páginas |
document.Pages[index] | pdf.Pages[index] | Página de acceso (ambas con índice 0) |
| <código>document.Pages.AddClone(pages)</código | PdfDocument.Merge() | Páginas clonar/fusionar |
Operaciones de texto y contenido
| GemBox PDF | IronPDF | Notas |
|---|---|---|
| <código>new PdfFormattedText()</código | Cadena HTML | Contenido del texto |
| <código>formattedText.FontSize = 12</código | CSS tamaño de fuente: 12pt | Tamaño de letra |
formattedText.Font = ... | CSS family: ... | Familia de fuentes |
| <código>page.Content.DrawText(text, point)</código | renderer.RenderHtmlAsPdf(html) | Renderizar texto |
| <código>page.Content.GetText()</código> | <código>pdf.ExtractTextFromPage(i)</código | Extraer texto |
Ejemplos de migración de código
Ejemplo 1: Conversión de HTML a PDF
Antes (GemBox PDF):
using IronPdf;csharp // NuGet: Install-Package GemBox.Pdf using GemBox.Pdf; using GemBox.Pdf.Content;
class Program { static void Main() { ComponentInfo.SetLicense("FREE-LIMITED-KEY");
var document = PdfDocument.Load("input.html");
document.Save("output.pdf");
}} using IronPdf;
Después (IronPDF):
using IronPdf;csharp // NuGet: Install-Package IronPdf using IronPdf;
class Program { static void Main() { var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf("
Hello World
"); pdf.SaveAs("output.pdf"); } } using IronPdf;El ChromePdfRenderer deIronPDFutiliza un moderno motor Chromium para una renderización precisa de HTML/CSS/JavaScript. A diferencia del soporte limitado de HTML de GemBox PDF,IronPDFpuede renderizar cualquier contenido HTML con soporte completo de CSS3 y JavaScript. Consulte la documentación HTML a PDF para obtener más opciones de conversión.
Ejemplo 2: Combinar archivos PDF
Antes (GemBox PDF):
using IronPdf;csharp // NuGet: Install-Package GemBox.Pdf using GemBox.Pdf; using System.Linq;
class Program { static void Main() { ComponentInfo.SetLicense("FREE-LIMITED-KEY");
using (var document = new PdfDocument())
{
var source1 = PdfDocument.Load("document1.pdf");
var source2 = PdfDocument.Load("document2.pdf");
document.Pages.AddClone(source1.Pages);
document.Pages.AddClone(source2.Pages);
document.Save("merged.pdf");
}
}} using IronPdf;
Después (IronPDF):
using IronPdf;csharp // NuGet: Install-Package IronPdf using IronPdf;
class Program { static void Main() { var pdf1 = PdfDocument.FromFile("document1.pdf"); var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
}} using IronPdf;
El método estático Merge deIronPDFsimplifica la operación: no es necesario crear un documento vacío y clonar las páginas individualmente. Más información sobre mezclar y dividir archivos PDF.
Ejemplo 3: Añadir texto a un PDF
Antes (GemBox PDF):
using IronPdf;csharp // NuGet: Install-Package GemBox.Pdf using GemBox.Pdf; using GemBox.Pdf.Content;
class Program { static void Main() { ComponentInfo.SetLicense("FREE-LIMITED-KEY");
using (var document = new PdfDocument())
{
var page = document.Pages.Add();
var formattedText = new PdfFormattedText()
{
Text = "Hello World",
FontSize = 24
};
page.Content.DrawText(formattedText, new PdfPoint(100, 700));
document.Save("output.pdf");
}
}} using IronPdf;
Después (IronPDF):
using IronPdf;csharp // NuGet: Install-Package IronPdf using IronPdf; using IronPdf.Editing;
class Program { static void Main() { var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf("
Original Content
"); var stamper = new TextStamper()
{
Text = "Hello World",
FontSize = 24,
HorizontalOffset = 100,
VerticalOffset = 700
};
pdf.ApplyStamp(stamper);
pdf.SaveAs("output.pdf");
}} using IronPdf;
Para añadir texto a los PDF existentes,IronPDFproporciona la clase TextStamper, que ofrece un control preciso del posicionamiento. Para documentos nuevos, basta con incluir el texto en la plantilla HTML. Consulte la documentación de sellado para obtener opciones adicionales.
Ejemplo 4: Creación de tablas (¡la mayor mejora!)
Antes (GemBox PDF) - Cada celda cuenta para el límite de 20 párrafos:
using IronPdf;csharp using GemBox.Pdf; using GemBox.Pdf.Content;
ComponentInfo.SetLicense("FREE-LIMITED-KEY");
using (var document = new PdfDocument()) { var page = document.Pages.Add(); double y = 700; double[] xPositions = { 50, 200, 300, 400 };
// Headers (4 paragraphs)
var headers = new[] { "Product", "Price", "Qty", "Total" };
for (int i = 0; i < headers.Length; i++)
{
var text = new PdfFormattedText { Text = headers[i], FontSize = 12 };
page.Content.DrawText(text, new PdfPoint(xPositions[i], y));
}
y -= 20;
// Data rows (4 paragraphs per row!)
// Can only add a few rows before hitting 20-paragraph limit!
document.Save("products.pdf");} using IronPdf;
Después (IronPDF) - Sin límites, tablas HTML adecuadas:
using IronPdf;csharp using IronPdf;
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
var html = @"
| Product | Price | Qty | Total |
|---|---|---|---|
| Widget A | $19.99 | 5 | $99.95 |
| Widget B | $29.99 | 3 | $89.97 |






