IronPDF vs GemBox.Pdf: Guía Completa de Comparación de Bibliotecas .NET para Conversión de HTML a PDF
Al desarrollar aplicaciones .NET que requieren generación y manipulación de PDF, elegir la biblioteca de PDF C# correcta puede impactar significativamente en el éxito de su proyecto. Esta comparación integral examina IronPDF y GemBox.Pdf, dos bibliotecas de PDF .NET prominentes, para ayudar a los desarrolladores a tomar una decisión informada basada en características, rendimiento, precios y casos de uso del mundo real.
Descripción rápida de la comparación
| Categoría | Característica/Aspecto | IronPDF | GemBox.Pdf | Ventajas clave |
|---|---|---|---|---|
| Arquitectura básica | Filosofía de diseño | En primer lugar, HTML, representación de Chrome | Manipulación nativa de PDF | Depende del contexto |
| Complejidad de la API | Métodos sencillos como RenderHtmlAsPdf() | Objetos PDF de bajo nivel | IronPDF: Desarrollo más rápido | |
| Curva de aprendizaje | 1-2 días típicos | 3-5 días típicos | IronPDF: Adopción más rápida | |
| Soporte de plataforma | Multiplataforma | Windows, Linux, macOS, Docker | Windows, Linux, macOS, Android, iOS | GemBox: Soporte móvil |
| Versiones .NET | .NET 10, 9, 8, 7, 6, 5, Core 3.1+, Framework 4.6.2+ | .NET 6, Standard 2.0, Framework 3.5+ | IronPDF: Última compatibilidad con .NET | |
| Plataformas en la nube | Azure/AWS optimizado | Soporte estándar en la nube | IronPDF: Preparado para la nube | |
| HTML a PDF | Motor de renderizado | Motor Chrome V8 completo | Sin soporte HTML integrado* | IronPDF: HTML nativo a PDF |
| Compatibilidad con CSS3/HTML5 | Asistencia completa | Requiere GemBox.Document | IronPDF: Estándares web modernos | |
| Ejecución de JavaScript | Compatibilidad total con JavaScript | No compatible con JavaScript | IronPDF: Contenido dinámico | |
| Velocidad de renderización | ~125ms típico | N/A (sin soporte HTML) | IronPDF: Renderizado rápido | |
| Experiencia del desarrollador | Ejemplos de Código | más de 100 ejemplos listos para usar | más de 100 ejemplos disponibles | Ambos: Amplios recursos |
| Documentación | Tutoriales, guías prácticas, vídeos | Documentación sobre API | IronPDF: Múltiples vías de aprendizaje | |
| Manipulación de contenido | Combinar/Dividir PDF | Métodos incorporados | Métodos incorporados | Ambos: Características estándar |
| Extracción de texto | Compatibilidad con Unicode, integración de OCR | Compatibilidad con Unicode, OCR integrado | GemBox: OCR integrado | |
| Soporte de formularios | Formularios HTML a formularios PDF | Crear, rellenar, aplanar formularios | Depende del contexto | |
| Métricas de rendimiento | Uso de la memoria | Menos de 10 MB típicos | Bajo consumo de memoria | Ambos: Eficiente |
| Soporte de Threading | Async/await nativo optimizado | Operaciones seguras | IronPDF: Mejor soporte de async | |
| Security & Encryption | Niveles de cifrado | AES-256, gestores personalizados | Norma AES-256 | Ambos: Estándar industrial |
| Firmas Digitales | Firmas integradas y visuales | Soporte de firma digital | Ambos: Soporte de firma | |
| Licensing & Pricing | Nivel inicial | Lite: $799 (1 dev, 1 project) | Desarrollador único: 890 $ (1 desarrollador, proyectos ilimitados) | IronPDF: Menor coste de entrada |
| Redistribución | +$1,999 libre de regalías | Despliegues incluidos e ilimitados | GemBox: Mejores términos de despliegue | |
| Opción Suite | Iron Suite: $1,498 (9 products) | Paquete GemBox: 2.200 $ (7 productos) | IronPDF: Mejor valor de suite | |
| Soporte | Soporte incluido | Sí, asistencia técnica 24/5 | Sí, 1 año de soporte profesional | Ambos: Buen soporte |
| Tiempo de respuesta | 24-48 horas típicas | En el plazo de 1 día laborable | Ambos: Respuesta rápida | |
| Mejor para | Casos de Uso | HTML a PDF, aplicaciones web, informes | Manipulación de PDF, formularios, OCR | Depende del contexto |
¿Qué es la biblioteca IronPDF?
IronPDF se destaca como una biblioteca de PDF .NET integral diseñada específicamente para que la conversión de HTML a PDF sea fluida para los desarrolladores. Construido con un motor de renderizado Chrome en su núcleo, IronPDF transforma la forma en que los desarrolladores abordan la generación de PDF en aplicaciones C#, F# y VB.NET.
La filosofía de la biblioteca se centra en aprovechar las habilidades de desarrollo web existentes. En lugar de aprender APIs PDF complejas, los desarrolladores pueden usar HTML, CSS y JavaScript familiares para crear documentos PDF sofisticados. Este enfoque reduce dramáticamente el tiempo de desarrollo mientras asegura un renderizado perfectpixel que coincide con los estándares web modernos.
Características principales de IronPDF
IronPDF ofrece un conjunto de características extensas que cubren virtualmente todas las tareas relacionadas con PDF que los desarrolladores puedan encontrar:
Excelencia en la conversión de HTML a PDF
- Motor Chrome V8: procesa HTML utilizando el mismo motor que Google Chrome, lo que garantiza una fidelidad del navegador superior al 98 %.
- Compatibilidad completa con CSS3/HTML5: compatibilidad completa con estándares web modernos, incluidos flexbox, cuadrícula y animaciones
- Ejecución de JavaScript: procesa JavaScript antes de renderizarlo, capturando el contenido dinámico a la perfección
- Diseño responsivo: maneja diseños responsivos con configuraciones de ventana gráfica personalizables
- Compatibilidad con fuentes web: reproduce con precisión fuentes de Google, fuentes personalizadas y fuentes de íconos.
Manipulación avanzada de PDF
- Fusionar y dividir archivos PDF : combine varios archivos PDF o extraiga páginas específicas con llamadas de método simples
- Firmas digitales : Aplique firmas criptográficas con soporte de certificado
- Gestión de formularios : cree formularios rellenables desde HTML o manipule formularios PDF existentes
- Marcas de agua y sellos : agregue marcas de agua de texto o imagen con control de transparencia
- Encabezados y pies de página : Encabezados/pies de página dinámicos con numeración de páginas
Seguridad y conformidad
- Cifrado : cifrado AES-256 con configuración de permisos personalizados
- Cumplimiento de PDF/A : genere archivos PDF con calidad de archivo para almacenamiento a largo plazo
- Redacción : eliminar permanentemente contenido sensible
- Protección con contraseña: Compatibilidad con contraseñas de usuario y propietario con permisos granulares
Ejemplo de código IronPDF: HTML a PDF con funciones avanzadas
using IronPdf;
using IronPdf.Rendering;
// Configure the Chrome renderer with advanced options
var renderer = new ChromePdfRenderer
{
RenderingOptions = new ChromePdfRenderOptions
{
// Set paper orientation and size
PaperOrientation = PdfPaperOrientation.Portrait,
PaperSize = PdfPaperSize.A4,
// Configure margins (in millimeters)
MarginTop = 25,
MarginBottom = 25,
MarginLeft = 20,
MarginRight = 20,
// Enable JavaScript execution
EnableJavaScript = true,
RenderDelay = 1000, // Wait 1 second for JS to complete
// Print background colors and images
PrintHtmlBackgrounds = true,
// Create PDF forms from HTML form elements
CreatePdfFormsFromHtml = true,
// Custom header and footer
HtmlHeader = new HtmlHeaderFooter
{
Height = 20,
HtmlFragment = "<div style='text-align: center; font-size: 12px;'>Company Report - {page} of {total-pages}</div>",
DrawDividerLine = true
},
HtmlFooter = new HtmlHeaderFooter
{
Height = 15,
HtmlFragment = "<div style='text-align: center; font-size: 10px;'>© 2025 Company Name. Confidential.</div>"
}
}
};
// Convert complex HTML with CSS and JavaScript
string htmlContent = @"
<!DOCTYPE html>
<html>
<head>
<style>
body { font-family: 'Segoe UI', Arial, sans-serif; line-height: 1.6; }
.invoice-header {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
padding: 30px;
border-radius: 10px;
margin-bottom: 30px;
}
.data-table {
width: 100%;
border-collapse: collapse;
margin-top: 20px;
}
.data-table th {
background-color: #f8f9fa;
padding: 12px;
text-align: left;
border-bottom: 2px solid #dee2e6;
}
.data-table td {
padding: 10px;
border-bottom: 1px solid #dee2e6;
}
.total-section {
margin-top: 30px;
text-align: right;
font-size: 18px;
font-weight: bold;
}
@media print {
.no-print { display: none; }
}
</style>
</head>
<body>
<div class='invoice-header'>
<h1>Invoice #INV-2025-001</h1>
<p>Date: <span id='current-date'></span></p>
</div>
<table class='data-table'>
<thead>
<tr>
<th>Item Description</th>
<th>Quantity</th>
<th>Unit Price</th>
<th>Total</th>
</tr>
</thead>
<tbody>
<tr>
<td>Professional PDF Library License</td>
<td>1</td>
<td>$799.00</td>
<td>$799.00</td>
</tr>
<tr>
<td>Priority Support (1 Year)</td>
<td>1</td>
<td>$299.00</td>
<td>$299.00</td>
</tr>
</tbody>
</table>
<div class='total-section'>
<p>Subtotal: $1,048.00</p>
<p>Tax (8%): $83.84</p>
<p style='color: #667eea; font-size: 24px;'>Total: $1,131.84</p>
</div>
<script>
// Dynamic date insertion
document.getElementById('current-date').textContent = new Date().toLocaleDateString('en-US', {
year: 'numeric',
month: 'long',
day: 'numeric'
});
</script>
</body>
</html>";
// Render the HTML to PDF
PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContent);
// Apply additional security settings
pdf.SecuritySettings.OwnerPassword = "admin123";
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserAnnotations = false;
pdf.SecuritySettings.AllowUserFormData = true;
// Add metadata
pdf.MetaData.Author = "Invoice System";
pdf.MetaData.Title = "Invoice INV-2025-001";
pdf.MetaData.Subject = "Customer Invoice";
pdf.MetaData.Keywords = "invoice, payment, 2025";
pdf.MetaData.CreationDate = DateTime.Now;
// Save the PDF
pdf.SaveAs("invoice-2025-001.pdf");
// Optional: Save as PDF/A for archival
pdf.SaveAsPdfA("invoice-2025-001-archive.pdf", PdfAVersions.PdfA3);using IronPdf;
using IronPdf.Rendering;
// Configure the Chrome renderer with advanced options
var renderer = new ChromePdfRenderer
{
RenderingOptions = new ChromePdfRenderOptions
{
// Set paper orientation and size
PaperOrientation = PdfPaperOrientation.Portrait,
PaperSize = PdfPaperSize.A4,
// Configure margins (in millimeters)
MarginTop = 25,
MarginBottom = 25,
MarginLeft = 20,
MarginRight = 20,
// Enable JavaScript execution
EnableJavaScript = true,
RenderDelay = 1000, // Wait 1 second for JS to complete
// Print background colors and images
PrintHtmlBackgrounds = true,
// Create PDF forms from HTML form elements
CreatePdfFormsFromHtml = true,
// Custom header and footer
HtmlHeader = new HtmlHeaderFooter
{
Height = 20,
HtmlFragment = "<div style='text-align: center; font-size: 12px;'>Company Report - {page} of {total-pages}</div>",
DrawDividerLine = true
},
HtmlFooter = new HtmlHeaderFooter
{
Height = 15,
HtmlFragment = "<div style='text-align: center; font-size: 10px;'>© 2025 Company Name. Confidential.</div>"
}
}
};
// Convert complex HTML with CSS and JavaScript
string htmlContent = @"
<!DOCTYPE html>
<html>
<head>
<style>
body { font-family: 'Segoe UI', Arial, sans-serif; line-height: 1.6; }
.invoice-header {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
padding: 30px;
border-radius: 10px;
margin-bottom: 30px;
}
.data-table {
width: 100%;
border-collapse: collapse;
margin-top: 20px;
}
.data-table th {
background-color: #f8f9fa;
padding: 12px;
text-align: left;
border-bottom: 2px solid #dee2e6;
}
.data-table td {
padding: 10px;
border-bottom: 1px solid #dee2e6;
}
.total-section {
margin-top: 30px;
text-align: right;
font-size: 18px;
font-weight: bold;
}
@media print {
.no-print { display: none; }
}
</style>
</head>
<body>
<div class='invoice-header'>
<h1>Invoice #INV-2025-001</h1>
<p>Date: <span id='current-date'></span></p>
</div>
<table class='data-table'>
<thead>
<tr>
<th>Item Description</th>
<th>Quantity</th>
<th>Unit Price</th>
<th>Total</th>
</tr>
</thead>
<tbody>
<tr>
<td>Professional PDF Library License</td>
<td>1</td>
<td>$799.00</td>
<td>$799.00</td>
</tr>
<tr>
<td>Priority Support (1 Year)</td>
<td>1</td>
<td>$299.00</td>
<td>$299.00</td>
</tr>
</tbody>
</table>
<div class='total-section'>
<p>Subtotal: $1,048.00</p>
<p>Tax (8%): $83.84</p>
<p style='color: #667eea; font-size: 24px;'>Total: $1,131.84</p>
</div>
<script>
// Dynamic date insertion
document.getElementById('current-date').textContent = new Date().toLocaleDateString('en-US', {
year: 'numeric',
month: 'long',
day: 'numeric'
});
</script>
</body>
</html>";
// Render the HTML to PDF
PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContent);
// Apply additional security settings
pdf.SecuritySettings.OwnerPassword = "admin123";
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserAnnotations = false;
pdf.SecuritySettings.AllowUserFormData = true;
// Add metadata
pdf.MetaData.Author = "Invoice System";
pdf.MetaData.Title = "Invoice INV-2025-001";
pdf.MetaData.Subject = "Customer Invoice";
pdf.MetaData.Keywords = "invoice, payment, 2025";
pdf.MetaData.CreationDate = DateTime.Now;
// Save the PDF
pdf.SaveAs("invoice-2025-001.pdf");
// Optional: Save as PDF/A for archival
pdf.SaveAsPdfA("invoice-2025-001-archive.pdf", PdfAVersions.PdfA3);Este ejemplo demuestra la capacidad de IronPDF para manejar diseños HTML complejos con gradientes, tablas, contenido dinámico de JavaScript y características avanzadas de PDF como configuraciones de seguridad y metadatos. La biblioteca procesa todo sin problemas, produciendo un PDF profesional que coincide exactamente con el diseño HTML.
¿Qué es la biblioteca GemBox.Pdf?
GemBox.Pdf representa un enfoque diferente para la manipulación de PDF en .NET. En lugar de enfocarse en la conversión de HTML a PDF, GemBox.Pdf se especializa en operaciones de PDF de bajo nivel y manipulación directa del PDF. Esto lo hace particularmente adecuado para escenarios donde los desarrolladores necesitan un control preciso sobre la estructura y el contenido del PDF.
La biblioteca sobresale al trabajar con documentos PDF existentes, ofreciendo características robustas para leer, editar y manipular archivos PDF a nivel granular. GemBox.Pdf opera sin dependencias de Adobe Acrobat, haciendo el despliegue directo en varios entornos.
Características principales de GemBox.Pdf
GemBox.Pdf proporciona capacidades de manipulación de PDF comprensivas:
Operaciones con documentos PDF
- Leer y escribir archivos PDF: acceso directo a la estructura y el contenido del PDF
- Fusionar y dividir: combine varios archivos PDF o extraiga páginas específicas
- Clonar páginas: Importar páginas entre diferentes documentos PDF
- Administración de páginas: agregue, elimine o reordene páginas mediante programación
Extracción y manipulación de contenidos
- Extracción de texto: extrae texto Unicode con información de posicionamiento
- Extracción de imágenes: recupera imágenes incrustadas de documentos PDF
- Compatibilidad con OCR: reconocimiento óptico de caracteres integrado para documentos escaneados
- Redacción de contenido: eliminar información confidencial de forma permanente
Formularios e interactividad
- Formularios interactivos: cree, rellene, aplane y exporte formularios PDF
- Gestión de campos de formulario: acceso programático a todos los tipos de campos de formulario
- Anotaciones: agregue hipervínculos y otras anotaciones en PDF
Elementos gráficos y visuales
- Operaciones de dibujo: agregar texto, imágenes y gráficos vectoriales
- Formas y trazados: crea dibujos vectoriales complejos
- Marcas de agua: Aplicar marcas de agua de texto e imagen
- Grupos de contenido: organice el contenido en grupos lógicos
Ejemplo de código de GemBox.Pdf: Manipulación de PDF y formularios
using GemBox.Pdf;
using GemBox.Pdf.Content;
using GemBox.Pdf.Forms;
using GemBox.Pdf.Security;
// Set license (use FREE-LIMITED-KEY for evaluation)
ComponentInfo.SetLicense("FREE-LIMITED-KEY");
// Create a new PDF document from scratch
using (var document = new PdfDocument())
{
// Add a page with custom size
var page = document.Pages.Add();
// Create formatted text with multiple styles
using (var formattedText = new PdfFormattedText())
{
formattedText.FontSize = 24;
formattedText.FontFamily = new PdfFontFamily("Arial");
formattedText.Color = PdfColor.FromRgb(0.2, 0.2, 0.6);
formattedText.AppendLine("GemBox.Pdf Document Example");
formattedText.FontSize = 12;
formattedText.Color = PdfColor.FromRgb(0, 0, 0);
formattedText.AppendLine("This document demonstrates PDF creation and manipulation features.");
// Draw text to the page
page.Content.DrawText(formattedText, new PdfPoint(50, 700));
}
// Add a form to the document
var form = document.Form;
// Create text field
var textField = form.Fields.AddText(page, 50, 600, 200, 30);
textField.Name = "CustomerName";
textField.Value = "Enter your name";
textField.Format.Fill.Color = PdfColor.FromRgb(0.95, 0.95, 0.95);
// Create checkbox
var checkBox = form.Fields.AddCheck(page, 50, 550, 20, 20);
checkBox.Name = "Agreement";
checkBox.Checked = false;
// Add descriptive text next to checkbox
using (var checkboxLabel = new PdfFormattedText())
{
checkboxLabel.Append("I agree to the terms and conditions");
page.Content.DrawText(checkboxLabel, new PdfPoint(80, 555));
}
// Create submit button
var submitButton = form.Fields.AddButton(page, 50, 500, 100, 30);
submitButton.Name = "Submit";
submitButton.Actions.Activate = PdfActionType.Named;
// Add button appearance
using (var buttonText = new PdfFormattedText())
{
buttonText.Append("Submit Form");
buttonText.FontSize = 14;
buttonText.Color = PdfColor.FromRgb(1, 1, 1);
// Create button appearance stream
var appearance = submitButton.Appearance.Normal;
appearance.Fill.Color = PdfColor.FromRgb(0.2, 0.4, 0.8);
appearance.Stroke.Color = PdfColor.FromRgb(0.1, 0.2, 0.4);
appearance.Stroke.Width = 1;
// Draw button background
appearance.DrawRectangle(new PdfPoint(0, 0), new PdfSize(100, 30), true, true);
// Draw button text
appearance.DrawText(buttonText, new PdfPoint(20, 10));
}
// Add a table using low-level graphics
var tableTop = 400;
var tableLeft = 50;
var cellWidth = 150;
var cellHeight = 30;
// Draw table headers
page.Content.DrawRectangle(new PdfPoint(tableLeft, tableTop),
new PdfSize(cellWidth * 3, cellHeight), true, true);
using (var headerText = new PdfFormattedText())
{
headerText.FontSize = 12;
headerText.Color = PdfColor.FromRgb(1, 1, 1);
headerText.Append("Product");
page.Content.DrawText(headerText, new PdfPoint(tableLeft + 10, tableTop + 10));
headerText.Clear();
headerText.Append("Quantity");
page.Content.DrawText(headerText, new PdfPoint(tableLeft + cellWidth + 10, tableTop + 10));
headerText.Clear();
headerText.Append("Price");
page.Content.DrawText(headerText, new PdfPoint(tableLeft + cellWidth * 2 + 10, tableTop + 10));
}
// Draw table data rows
var rowData = new[]
{
new { Product = "PDF Library", Quantity = "1", Price = "$890" },
new { Product = "Support Plan", Quantity = "1", Price = "$299" },
new { Product = "Training", Quantity = "2", Price = "$500" }
};
var currentY = tableTop - cellHeight;
foreach (var row in rowData)
{
// Draw cell borders
page.Content.DrawRectangle(new PdfPoint(tableLeft, currentY),
new PdfSize(cellWidth, cellHeight), false, true);
page.Content.DrawRectangle(new PdfPoint(tableLeft + cellWidth, currentY),
new PdfSize(cellWidth, cellHeight), false, true);
page.Content.DrawRectangle(new PdfPoint(tableLeft + cellWidth * 2, currentY),
new PdfSize(cellWidth, cellHeight), false, true);
// Draw cell content
using (var cellText = new PdfFormattedText())
{
cellText.FontSize = 11;
cellText.Append(row.Product);
page.Content.DrawText(cellText, new PdfPoint(tableLeft + 10, currentY + 10));
cellText.Clear();
cellText.Append(row.Quantity);
page.Content.DrawText(cellText, new PdfPoint(tableLeft + cellWidth + 10, currentY + 10));
cellText.Clear();
cellText.Append(row.Price);
page.Content.DrawText(cellText, new PdfPoint(tableLeft + cellWidth * 2 + 10, currentY + 10));
}
currentY -= cellHeight;
}
// Apply security settings
var securitySettings = document.SecuritySettings;
securitySettings.DocumentOpenPassword = "user123";
securitySettings.PermissionsPassword = "owner123";
securitySettings.Permissions = PdfPermissions.AllowPrint | PdfPermissions.AllowFormFill;
// Save the document
document.Save("gembox-example.pdf");
}
// Example: Manipulating existing PDF
using (var existingDoc = PdfDocument.Load("existing-document.pdf"))
{
// Extract text from first page
var page = existingDoc.Pages[0];
var text = page.Content.GetText();
Console.WriteLine($"Extracted text: {text}");
// Add watermark to all pages
foreach (var p in existingDoc.Pages)
{
using (var watermark = new PdfFormattedText())
{
watermark.Append("CONFIDENTIAL");
watermark.FontSize = 50;
watermark.Color = PdfColor.FromRgb(0.5, 0.5, 0.5);
watermark.Opacity = 0.3;
// Calculate center position
var pageWidth = p.MediaBox.Width;
var pageHeight = p.MediaBox.Height;
var textWidth = watermark.Width;
var textHeight = watermark.Height;
var x = (pageWidth - textWidth) / 2;
var y = (pageHeight - textHeight) / 2;
// Draw watermark diagonally
p.Content.SaveGraphicsState();
p.Content.SetTransform(1, 0, 0, 1, x, y);
p.Content.SetTransform(0.7071, 0.7071, -0.7071, 0.7071, 0, 0);
p.Content.DrawText(watermark, new PdfPoint(0, 0));
p.Content.RestoreGraphicsState();
}
}
existingDoc.Save("watermarked-document.pdf");
}using GemBox.Pdf;
using GemBox.Pdf.Content;
using GemBox.Pdf.Forms;
using GemBox.Pdf.Security;
// Set license (use FREE-LIMITED-KEY for evaluation)
ComponentInfo.SetLicense("FREE-LIMITED-KEY");
// Create a new PDF document from scratch
using (var document = new PdfDocument())
{
// Add a page with custom size
var page = document.Pages.Add();
// Create formatted text with multiple styles
using (var formattedText = new PdfFormattedText())
{
formattedText.FontSize = 24;
formattedText.FontFamily = new PdfFontFamily("Arial");
formattedText.Color = PdfColor.FromRgb(0.2, 0.2, 0.6);
formattedText.AppendLine("GemBox.Pdf Document Example");
formattedText.FontSize = 12;
formattedText.Color = PdfColor.FromRgb(0, 0, 0);
formattedText.AppendLine("This document demonstrates PDF creation and manipulation features.");
// Draw text to the page
page.Content.DrawText(formattedText, new PdfPoint(50, 700));
}
// Add a form to the document
var form = document.Form;
// Create text field
var textField = form.Fields.AddText(page, 50, 600, 200, 30);
textField.Name = "CustomerName";
textField.Value = "Enter your name";
textField.Format.Fill.Color = PdfColor.FromRgb(0.95, 0.95, 0.95);
// Create checkbox
var checkBox = form.Fields.AddCheck(page, 50, 550, 20, 20);
checkBox.Name = "Agreement";
checkBox.Checked = false;
// Add descriptive text next to checkbox
using (var checkboxLabel = new PdfFormattedText())
{
checkboxLabel.Append("I agree to the terms and conditions");
page.Content.DrawText(checkboxLabel, new PdfPoint(80, 555));
}
// Create submit button
var submitButton = form.Fields.AddButton(page, 50, 500, 100, 30);
submitButton.Name = "Submit";
submitButton.Actions.Activate = PdfActionType.Named;
// Add button appearance
using (var buttonText = new PdfFormattedText())
{
buttonText.Append("Submit Form");
buttonText.FontSize = 14;
buttonText.Color = PdfColor.FromRgb(1, 1, 1);
// Create button appearance stream
var appearance = submitButton.Appearance.Normal;
appearance.Fill.Color = PdfColor.FromRgb(0.2, 0.4, 0.8);
appearance.Stroke.Color = PdfColor.FromRgb(0.1, 0.2, 0.4);
appearance.Stroke.Width = 1;
// Draw button background
appearance.DrawRectangle(new PdfPoint(0, 0), new PdfSize(100, 30), true, true);
// Draw button text
appearance.DrawText(buttonText, new PdfPoint(20, 10));
}
// Add a table using low-level graphics
var tableTop = 400;
var tableLeft = 50;
var cellWidth = 150;
var cellHeight = 30;
// Draw table headers
page.Content.DrawRectangle(new PdfPoint(tableLeft, tableTop),
new PdfSize(cellWidth * 3, cellHeight), true, true);
using (var headerText = new PdfFormattedText())
{
headerText.FontSize = 12;
headerText.Color = PdfColor.FromRgb(1, 1, 1);
headerText.Append("Product");
page.Content.DrawText(headerText, new PdfPoint(tableLeft + 10, tableTop + 10));
headerText.Clear();
headerText.Append("Quantity");
page.Content.DrawText(headerText, new PdfPoint(tableLeft + cellWidth + 10, tableTop + 10));
headerText.Clear();
headerText.Append("Price");
page.Content.DrawText(headerText, new PdfPoint(tableLeft + cellWidth * 2 + 10, tableTop + 10));
}
// Draw table data rows
var rowData = new[]
{
new { Product = "PDF Library", Quantity = "1", Price = "$890" },
new { Product = "Support Plan", Quantity = "1", Price = "$299" },
new { Product = "Training", Quantity = "2", Price = "$500" }
};
var currentY = tableTop - cellHeight;
foreach (var row in rowData)
{
// Draw cell borders
page.Content.DrawRectangle(new PdfPoint(tableLeft, currentY),
new PdfSize(cellWidth, cellHeight), false, true);
page.Content.DrawRectangle(new PdfPoint(tableLeft + cellWidth, currentY),
new PdfSize(cellWidth, cellHeight), false, true);
page.Content.DrawRectangle(new PdfPoint(tableLeft + cellWidth * 2, currentY),
new PdfSize(cellWidth, cellHeight), false, true);
// Draw cell content
using (var cellText = new PdfFormattedText())
{
cellText.FontSize = 11;
cellText.Append(row.Product);
page.Content.DrawText(cellText, new PdfPoint(tableLeft + 10, currentY + 10));
cellText.Clear();
cellText.Append(row.Quantity);
page.Content.DrawText(cellText, new PdfPoint(tableLeft + cellWidth + 10, currentY + 10));
cellText.Clear();
cellText.Append(row.Price);
page.Content.DrawText(cellText, new PdfPoint(tableLeft + cellWidth * 2 + 10, currentY + 10));
}
currentY -= cellHeight;
}
// Apply security settings
var securitySettings = document.SecuritySettings;
securitySettings.DocumentOpenPassword = "user123";
securitySettings.PermissionsPassword = "owner123";
securitySettings.Permissions = PdfPermissions.AllowPrint | PdfPermissions.AllowFormFill;
// Save the document
document.Save("gembox-example.pdf");
}
// Example: Manipulating existing PDF
using (var existingDoc = PdfDocument.Load("existing-document.pdf"))
{
// Extract text from first page
var page = existingDoc.Pages[0];
var text = page.Content.GetText();
Console.WriteLine($"Extracted text: {text}");
// Add watermark to all pages
foreach (var p in existingDoc.Pages)
{
using (var watermark = new PdfFormattedText())
{
watermark.Append("CONFIDENTIAL");
watermark.FontSize = 50;
watermark.Color = PdfColor.FromRgb(0.5, 0.5, 0.5);
watermark.Opacity = 0.3;
// Calculate center position
var pageWidth = p.MediaBox.Width;
var pageHeight = p.MediaBox.Height;
var textWidth = watermark.Width;
var textHeight = watermark.Height;
var x = (pageWidth - textWidth) / 2;
var y = (pageHeight - textHeight) / 2;
// Draw watermark diagonally
p.Content.SaveGraphicsState();
p.Content.SetTransform(1, 0, 0, 1, x, y);
p.Content.SetTransform(0.7071, 0.7071, -0.7071, 0.7071, 0, 0);
p.Content.DrawText(watermark, new PdfPoint(0, 0));
p.Content.RestoreGraphicsState();
}
}
existingDoc.Save("watermarked-document.pdf");
}Este ejemplo muestra la fortaleza de GemBox.Pdf en la manipulación de PDF de bajo nivel, demostrando la creación de formularios, dibujo de gráficos y características de seguridad del documento. Aunque el código es más detallado que el enfoque HTML de IronPDF, proporciona control preciso sobre cada aspecto del PDF.
¿Cómo manejan estas bibliotecas la conversión de HTML a PDF?
El enfoque hacia la conversión de HTML a PDF representa una de las diferencias significativas entre IronPDF y GemBox.Pdf.
Enfoque HTML a PDF de IronPDF
IronPDF fue construido desde cero con la conversión de HTML a PDF como su enfoque principal. La biblioteca incluye un motor de renderizado completo de Chrome que procesa HTML, CSS y JavaScript exactamente como lo haría un navegador web. Esto significa:
- Representación real del navegador: utiliza el mismo motor Blink que Google Chrome
- Estándares web completos: compatibilidad total con CSS3, HTML5, flexbox, grid y JavaScript moderno
- Contenido dinámico: ejecuta JavaScript antes de renderizar, capturando contenido AJAX y elementos dinámicos
- Diseño responsivo: maneja consultas de medios y diseños responsivos
- Recursos externos: obtiene automáticamente imágenes, hojas de estilo y fuentes de las URL
Soporte HTML limitado de GemBox
GemBox.Pdf en sí no soporta conversión de HTML a PDF. Para convertir HTML a PDF con GemBox, los desarrolladores deben:
- Comprar GemBox.Document por separado ($890 costo adicional)
- Usar GemBox.Document para convertir HTML a DOCX
- Luego convertir DOCX a PDF
Este enfoque tiene limitaciones significativas:
- Sin soporte para JavaScript: no se puede procesar contenido dinámico
- Compatibilidad limitada con CSS: muchas funciones CSS modernas no son compatibles
- Problemas de estilo: problemas conocidos con bordes y diseños complejos, como se indica en las discusiones de Stack Overflow.
- Solo optimizado para impresión: requiere HTML con formato específico para impresión
- Costo adicional: Requiere la compra de dos bibliotecas separadas
Soporte de marcos CSS modernos: Una diferencia crítica
Una de las ventajas más significativas del renderizado basado en Chrome de IronPDF se hace evidente al trabajar con frameworks CSS modernos como Bootstrap, Tailwind CSS y Foundation. Estos frameworks se han convertido en la columna vertebral de las aplicaciones web modernas, y su capacidad para renderizarse correctamente en PDFs es esencial para muchos casos de uso.
IronPDF: Compatibilidad total con marcos de trabajo modernos
El motor de renderizado Chrome de IronPDF proporciona un soporte completo y nativo para todos los frameworks CSS modernos:
- Bootstrap 5: Compatibilidad total con Flexbox y CSS Grid para diseños adaptables
- Tailwind CSS: Soporte completo para el marco CSS de utilidad prioritaria
- Ejemplos del mundo real: Representa la página de inicio de Bootstrap y las plantillas de Bootstrap con una resolución de píxeles perfecta.
- Funciones modernas de CSS3: animaciones, transformaciones, transiciones, propiedades personalizadas
- Diseños adaptables: las consultas de medios y los diseños basados en ventanas gráficas funcionan a la perfección
Ejemplo de Código: Formulario Bootstrap a PDF
using IronPdf;
var renderer = new ChromePdfRenderer();
string bootstrapForm = @"
<!DOCTYPE html>
<html>
<head>
<link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
</head>
<body>
<div class='container mt-5'>
<h1 class='mb-4'>Customer Registration</h1>
<form class='needs-validation'>
<div class='row g-3'>
<div class='col-md-6'>
<label class='form-label'>First Name</label>
<input type='text' class='form-control' value='John'>
</div>
<div class='col-md-6'>
<label class='form-label'>Last Name</label>
<input type='text' class='form-control' value='Smith'>
</div>
</div>
<div class='mt-4'>
<button class='btn btn-primary' type='submit'>Submit</button>
</div>
</form>
</div>
</body>
</html>";
var pdf = renderer.RenderHtmlAsPdf(bootstrapForm);
pdf.SaveAs("bootstrap-form.pdf");using IronPdf;
var renderer = new ChromePdfRenderer();
string bootstrapForm = @"
<!DOCTYPE html>
<html>
<head>
<link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
</head>
<body>
<div class='container mt-5'>
<h1 class='mb-4'>Customer Registration</h1>
<form class='needs-validation'>
<div class='row g-3'>
<div class='col-md-6'>
<label class='form-label'>First Name</label>
<input type='text' class='form-control' value='John'>
</div>
<div class='col-md-6'>
<label class='form-label'>Last Name</label>
<input type='text' class='form-control' value='Smith'>
</div>
</div>
<div class='mt-4'>
<button class='btn btn-primary' type='submit'>Submit</button>
</div>
</form>
</div>
</body>
</html>";
var pdf = renderer.RenderHtmlAsPdf(bootstrapForm);
pdf.SaveAs("bootstrap-form.pdf");GemBox: Sin soporte para frameworks modernos
Dado que GemBox.Pdf carece de renderizado HTML nativo y debe depender de GemBox.Document para la conversión de HTML, los frameworks CSS modernos enfrentan severas limitaciones:
- Sin compatibilidad con Bootstrap: las funciones Flexbox y CSS Grid no se mostrarán correctamente
- Sin Tailwind CSS: clases de utilidad y diseños modernos no compatibles
- Se requieren soluciones manuales alternativas: se deben crear versiones de HTML optimizadas para impresión
- CSS3 limitado: muchas funciones CSS modernas simplemente no funcionan
- Complejidad adicional: el proceso de conversión de dos pasos (HTML → DOCX → PDF) introduce inconsistencias
Según discusiones de desarrolladores, incluso las características básicas de CSS como bordes y disposiciones pueden ser problemáticas con el enfoque de conversión HTML de GemBox.
Impacto en el mundo real: si su aplicación utiliza Bootstrap para su interfaz de usuario y necesita generar informes o exportaciones en PDF que coincidan con su interfaz web, IronPDF ofrece una solución sencilla, mientras que GemBox requeriría un rediseño significativo o soluciones manuales alternativas.
Para obtener más detalles sobre la compatibilidad de los frameworks CSS, consulte la Guía de Bootstrap y Flexbox CSS.
¿Qué biblioteca destaca en diferentes tareas de PDF?
Entender dónde brilla cada biblioteca ayuda a los desarrolladores a elegir la herramienta adecuada para sus necesidades específicas.
En qué destaca IronPDF
IronPDF muestra un rendimiento superior en estos escenarios:
1. Generación de PDF para aplicaciones web
Perfecto para aplicaciones SaaS, portales web, y cualquier sistema que necesite convertir contenido web a PDF. El motor de renderizado Chrome asegura que los diseños web complejos, incluidos aquellos que usan Bootstrap, Tailwind CSS o frameworks personalizados, se rendericen perfectamente.
2. Generación de informes dinámicos
Cuando los informes incluyen gráficos (Chart.js, D3.js), visualización de datos dinámica, o contenido renderizado con JavaScript, IronPDF captura todo con precisión. Esto lo hace ideal para paneles de inteligencia empresarial y aplicaciones basadas en datos.
3. Plantillas de facturas y documentos
Usar plantillas HTML/CSS para facturas, recibos, y documentos comerciales permite a los diseñadores crear plantillas sin aprender APIs específicas de PDF. Los cambios pueden realizarse rápidamente usando tecnologías web familiares.
4. Proyectos de desarrollo rápido
El API simple y el enfoque basado en HTML reducen significativamente el tiempo de desarrollo. Un desarrollador puede crear un PDF complejo en minutos en lugar de horas.
5. Despliegue multiplataforma
Con soporte nativo para Windows, Linux, macOS, Docker y plataformas en la nube, IronPDF simplifica el despliegue en entornos diversos.
En qué destaca GemBox.Pdf
GemBox.Pdf muestra sus fortalezas en estas áreas:
1. Manipulación de PDF de bajo nivel
Cuando se requiere un control preciso sobre la estructura del PDF, el enfoque orientado a objetos de GemBox.Pdf proporciona acceso directo a elementos, flujos y diccionarios PDF.
2. Aplicaciones pesadas
Para aplicaciones que trabajan extensivamente con formularios PDF, GemBox.Pdf ofrece manipulación completa de campos de formulario, incluyendo la creación programática de formularios interactivos complejos.
3. Requisitos OCR
Con capacidades integradas de OCR, GemBox.Pdf puede extraer texto de documentos escaneados sin requerir bibliotecas adicionales, haciéndolo adecuado para proyectos de digitalización de documentos.
4. Desarrollo móvil
El soporte nativo para plataformas Android e iOS hace de GemBox.Pdf una buena opción para aplicaciones móviles que necesitan funcionalidad PDF.
5. Modificación de PDF existentes
Cuando se trabaja principalmente con PDFs existentes en lugar de generar nuevos, las herramientas de extracción, manipulación y modificación de GemBox.Pdf están bien ajustadas para la tarea.
¿Cómo se comparan la instalación y la configuración?
Ambas bibliotecas ofrecen instalación sencilla a través de NuGet, pero con diferentes niveles de complejidad.
Instalación de IronPDF
La instalación de IronPDF es notablemente simple:
Install-Package IronPdf
O a través de .NET CLI:
dotnet add package IronPdf
El paquete incluye todo lo necesario, incluido el motor de renderizado Chrome. No se requieren configuraciones adicionales o dependencias para la mayoría de los casos de uso.
Para escenarios de despliegue específicos, IronPDF ofrece:
IronPdf.Slim: paquete liviano que descarga componentes específicos de la plataforma en tiempo de ejecuciónIronPdf.Linux: preconfigurado para implementaciones de LinuxIronPdf.MacOs: Optimizado para entornos macOS
Instalación de GemBox.Pdf
La instalación de GemBox.Pdf es igual de simple para la manipulación básica de PDF:
Install-Package GemBox.Pdf
Sin embargo, para la conversión de HTML a PDF, necesitarás:
Install-Package GemBox.Document
Ambas bibliotecas requieren la configuración de la clave de licencia:
// IronPDF
License.LicenseKey = "YOUR-LICENSE-KEY";
// GemBox.Pdf
ComponentInfo.SetLicense("YOUR-LICENSE-KEY");// IronPDF
License.LicenseKey = "YOUR-LICENSE-KEY";
// GemBox.Pdf
ComponentInfo.SetLicense("YOUR-LICENSE-KEY");¿Cuáles son las diferencias en licencias y precios?
Entender los modelos de licenciamiento ayuda a determinar el costo total de propiedad para cada solución.
Licencias de IronPDF
IronPDF ofrece licenciamiento transparente y escalonado (precios para 2025):
Licencia Lite: $799
- 1 desarrollador
- 1 proyecto
- 1 año de soporte y actualizaciones
Licencia Plus: $1,199
- 3 desarrolladores
- 3 proyectos
- 1 año de soporte y actualizaciones
- Licencia profesional: $2,399
- 10 desarrolladores
- 10 proyectos
- 1 año de soporte y actualizaciones
Opciones Adicionales:
- Redistribución sin regalías: +$2,399
- Licenciamiento para SaaS/OEM disponible
- [Paquete Iron Suite](https://Iron Software.com/suite/): $1,498 por 9 productos
Beneficios clave:
- Garantía de devolución de 30 días
- Licencias perpetuas (compra única)
- Desarrollo y pruebas gratuitas
- Despliegue en desarrollo/preproducción/producción incluido
Licencias de GemBox.Pdf
GemBox ofrece licenciamiento por desarrollador:
- Desarrollador único: $890
- 1 desarrollador
- Proyectos ilimitados
- 1 año de soporte y actualizaciones
- Despliegue sin regalías incluido
Consideraciones importantes:
- HTML a PDF requiere GemBox.Document: Costo adicional de $890
- Costo total para HTML a PDF: $1,780 como mínimo
- 40% de descuento en renovaciones (60% si se renueva antes de la expiración)
- Paquete GemBox: $2,200 por 7 productos
Beneficios clave:
- Garantía de devolución de 30 días
- Licencias perpetuas
- Despliegue ilimitado incluido
- No se requieren licencias de servidor o OEM
Comparación de costes para escenarios comunes
| Escenario | Costo de IronPDF | Costo de GemBox |
|---|---|---|
| Un solo desarrollador, HTML a PDF | $799 | $1,780 |
| 3 desarrolladores, solo manipulación de PDF | $1,499 | $2,670 |
| 3 desarrolladores, HTML a PDF | $1,199 | $5,340 |
| Empresa (10 devs), características completas | $2,399 | $8,900+ |
¿Qué biblioteca elegir?
La elección entre IronPDF y GemBox.Pdf depende de sus requisitos específicos:
Elija IronPDF cuando:
- HTML a PDF es un requisito principal: la representación basada en Chrome de IronPDF es incomparable
- Necesita soporte web moderno: capacidades completas de CSS3, HTML5 y JavaScript
- El desarrollo rápido es importante: una API simple reduce el tiempo de comercialización
- Trabaja con contenido dinámico: la ejecución de JavaScript captura datos en tiempo real
- Se necesita una implementación multiplataforma: excelente soporte para entornos en la nube y en contenedores
- El presupuesto es un factor a considerar: menor costo de entrada y mejor valor para escenarios de HTML a PDF
Elija GemBox.Pdf cuando:
- El control de PDF de bajo nivel es esencial: acceso directo a los objetos y la estructura del PDF
- Se requiere compatibilidad con plataformas móviles: compatibilidad nativa con Android e iOS
- El OCR es un requisito fundamental: OCR integrado sin dependencias adicionales
- Trabaja principalmente con archivos PDF existentes: potentes funciones de manipulación y extracción
- No es necesario convertir HTML a PDF: evite pagar por GemBox.Document no utilizado
- La implementación ilimitada es importante: redistribución sin regalías incluida
Considere el uso de ambas bibliotecas cuando:
Algunas organizaciones encuentran valor en usar ambas bibliotecas para diferentes partes de su aplicación:
- IronPDF para generación de informes y conversión de HTML a PDF
- GemBox.Pdf para procesamiento de formularios y manipulación de PDF
Cómo empezar con la biblioteca elegida
Ambas bibliotecas ofrecen pruebas gratuitas para evaluar sus capacidades:
Pruebe IronPDF
- Instala el paquete NuGet
- No se necesita clave de licencia para desarrollo
- Las marcas de agua aparecen en PDFs en modo de prueba
- Acceso completo a características durante la evaluación
Pruebe GemBox.Pdf
- Instala el paquete NuGet
- Usa
ComponentInfo.SetLicense("FREE-LIMITED-KEY") - Limitado a 2 páginas en modo gratuito
- Actualiza para eliminar limitaciones
Guía de instalación visual
Para desarrolladores que prefieren la interfaz gráfica de Visual Studio, aquí hay una guía paso a paso para instalar ambas bibliotecas:
Creación de un nuevo proyecto ASP.NET
El diálogo de Nuevo Proyecto de Visual Studio para crear una Aplicación Web ASP.NET - la base para proyectos de generación de PDF
Seleccionando Web Forms como plantilla de proyecto - adecuado para implementaciones tanto de IronPDF como de GemBox.Pdf
Instalación de bibliotecas PDF a través de NuGet
Haz clic derecho en tu proyecto en el Explorador de Soluciones para acceder al Administrador de Paquetes NuGet para la instalación de la biblioteca
Acceso alternativo al Administrador de Paquetes NuGet a través del menú Proyecto en Visual Studio
Instalando IronPDF a través del Administrador de Paquetes NuGet - nota la descripción completa de características y conteo de descargas
Métodos de instalación alternativos
El sitio web de IronPDF ofrece descargas directas de DLL para escenarios donde la instalación vía NuGet no es adecuada
Conclusión
Tanto IronPDF como GemBox.Pdf son bibliotecas de PDF de calidad para desarrolladores .NET, cada una con fortalezas distintas. IronPDF destaca en la conversión de HTML a PDF con su motor de renderizado Chrome, haciéndolo ideal para aplicaciones web modernas y generación de contenido dinámico. GemBox.Pdf brilla en la manipulación de PDF de bajo nivel y soporte móvil, perfecto para aplicaciones que requieren control PDF preciso.
Para la mayoría de los desarrolladores web y equipos que construyen aplicaciones modernas, IronPDF ofrece la mejor combinación de características, facilidad de uso y valor. Su capacidad para renderizar PDFs perfectos en píxel desde HTML usando tecnologías web familiares reduce significativamente el tiempo de desarrollo y la complejidad.
Sin embargo, GemBox.Pdf sigue siendo una opción sólida para escenarios especializados, particularmente en desarrollo móvil y aplicaciones enfocadas en procesamiento de formularios PDF o requisitos de OCR.
¿Listo para transformar tu contenido HTML en PDFs profesionales? Comienza con la prueba gratuita de IronPDF y experimenta la potencia del renderizado de calidad Chrome en tus aplicaciones .NET. Con documentación completa, ejemplos de código extensos y soporte receptivo, estarás generando PDFs en minutos, no horas.
Preguntas Frecuentes
¿Cómo puedo convertir HTML a PDF en C#?
Puedes usar el método RenderHtmlAsPdf de IronPDF para convertir cadenas de HTML en PDFs. También puedes convertir archivos HTML a PDFs usando RenderHtmlFileAsPdf.
¿Puedo manipular archivos PDF existentes con estas bibliotecas?
Sí, tanto IronPDF como GemBox.Pdf se pueden usar para manipular archivos PDF existentes. IronPDF simplifica tareas comunes como fusionar, dividir y añadir marcas de agua. GemBox.Pdf ofrece un control más detallado sobre los objetos PDF, lo cual es útil para tareas de manipulación complejas.
¿Cuáles son las ventajas de usar IronPDF para la conversión de HTML a PDF?
IronPDF ofrece una calidad superior de conversión de HTML a PDF con su motor de renderizado Chrome V8, logrando una fidelidad de navegador de más del 98%. Soporta CSS3 moderno, HTML5, ejecución de JavaScript, fuentes web y diseños responsivos.
¿Qué biblioteca es más rentable para un pequeño equipo de desarrollo?
Para un equipo de 3 desarrolladores que necesita conversión de HTML a PDF, IronPDF cuesta $1,499 por la licencia Plus, mientras que GemBox costaría $5,340 por 3 licencias de GemBox.Pdf y 3 licencias de GemBox.Document. IronPDF ofrece un valor significativamente mejor para los equipos.
¿Es IronPDF adecuado para la generación de PDF de alto volumen?
Sí, IronPDF proporciona un excelente rendimiento con aproximadamente 125ms de tiempo de renderizado de HTML a PDF, soporte optimizado para async/await y un uso eficiente de la memoria por debajo de 10MB. Es ideal para la generación de PDF basados en web de alto volumen.
¿Qué tipo de soporte está incluido con IronPDF?
IronPDF incluye soporte de ingeniería 24/5 con acceso directo al equipo de desarrollo y tiempos de respuesta típicos de 24-48 horas, junto con documentación completa y ejemplos de código.
¿Puedo crear documentos compatibles con PDF/A con estas bibliotecas?
Sí, IronPDF puede generar documentos compatibles con PDF/A con una simple llamada al método como SaveAsPdfA(), soportando múltiples versiones de PDF/A. GemBox.Pdf puede leer documentos PDF/A y mantener la compatibilidad al modificarlos.
¿Son estas bibliotecas compatibles con los marcos modernos de .NET?
Sí, ambas bibliotecas son compatibles con las versiones modernas de .NET. IronPDF soporta .NET Framework 4.6.2+, .NET Core 3.1+ y de .NET 5 a 10. GemBox.Pdf soporta .NET Framework 3.5+, .NET Standard 2.0 y .NET 6+.
¿Cuál biblioteca está optimizada para el despliegue en la nube?
IronPDF está optimizado para el despliegue en la nube con soporte específico para Azure, AWS, contenedores Docker y entornos sin servidor. Su enfoque basado en HTML encaja naturalmente con aplicaciones web, haciéndola la mejor opción para aplicaciones SaaS.
¿Hay una versión gratuita disponible para probar IronPDF?
IronPDF ofrece una opción de evaluación gratuita que permite el desarrollo y pruebas ilimitadas sin clave de licencia, aunque aparecerán marcas de agua en la salida. Esto proporciona suficiente funcionalidad para evaluar el producto antes de comprarlo.






