SpirePDF C# Tutorial de HTML a PDF & Comparación de Biblioteca
Convertir HTML a PDF es un requisito crítico para muchas aplicaciones .NET, desde la generación de facturas e informes hasta la creación de documentación y libros electrónicos. Al elegir entre IronPDF y Spire.PDF para sus necesidades de conversión de HTML a PDF, es esencial comprender sus fortalezas, limitaciones y rendimiento en el mundo real. Esta comparación exhaustiva examina las capacidades de ambas bibliotecas, ayudándole a tomar una decisión informada para sus requisitos de generación de PDF.
¿Cuáles son las principales diferencias entre IronPDF y Spire.PDF para la conversión de HTML a PDF?
IronPDF es una biblioteca PDF .NET versátil diseñada para manejar una amplia gama de tareas relacionadas con PDF, incluyendo la conversión de archivos PDF, la edición de PDF, la creación de PDF, la lectura de archivos PDF y más. Es conocido por su facilidad de integración en aplicaciones .NET existentes, alto rendimiento y soporte para estándares web modernos como HTML5, CSS3 y JavaScript. El motor de renderizado basado en Chrome de IronPDF garantiza la generación de PDF con precisión de píxeles a partir de contenido HTML.
Spire.PDF para .NET es otra potente biblioteca PDF para .NET que proporciona un conjunto completo de características para la creación y manipulación de PDF. Admite varias funcionalidades PDF, como la extracción de texto e imágenes, el llenado de formularios PDF y las firmas digitales. Si bien es completo en cuanto a características, sus capacidades de conversión de HTML a PDF tienen limitaciones específicas que los desarrolladores deben considerar.
| Categoría | Característica/Aspecto | IronPDF | Spire.PDF | Ventajas clave |
|---|---|---|---|---|
| Arquitectura básica | Filosofía de diseño | API sencillas e intuitivas | Enfoque multiclase, configuración manual | IronPDF: Desarrollo más rápido |
| Complejidad de la API | Métodos sencillos como RenderHtmlAsPdf() | Se requiere un enfoque multihilo | IronPDF: 70% menos de código | |
| Curva de aprendizaje | 1-2 días típicos | 1-2 semanas típicas | IronPDF: Adopción más rápida | |
| Soporte de plataforma | Multiplataforma | Soporte nativo, sin paquetes adicionales | Compatibilidad limitada con Linux/macOS | IronPDF: Verdadera multiplataforma |
| Versiones .NET | .NET 8, 7, 6, 5, Core 3.1+, Framework 4.6.2+ | .NET Core 2.0+, Framework 2.0+ | Ambos: Amplia compatibilidad con marcos de trabajo | |
| Sistemas Operativos | Windows, Linux, macOS, Docker nativo | Principalmente centrado en Windows | IronPDF: Mayor compatibilidad con sistemas operativos | |
| HTML a PDF | Motor de renderizado | Motor Chrome V8 completo | Analizador HTML personalizado | IronPDF: 98%+ de fidelidad del navegador |
| Compatibilidad con CSS3/HTML5 | Asistencia completa | Limitado (sólo CSS básico) | IronPDF: Estándares web modernos | |
| Ejecución de JavaScript | Compatibilidad total con JavaScript | Previsto pero no realizado | IronPDF: Preparado para contenido dinámico | |
| Fuentes web | Google Fonts, fuentes del sistema | Compatibilidad limitada con fuentes | IronPDF: Flexibilidad tipográfica | |
| Velocidad de renderización | 0.8-1.2s típico | 0.5-0,8s para HTML sencillo | Spire: Faster para HTML básico | |
| Security & Encryption | Niveles de cifrado | AES-256, gestores personalizados | Norma AES-256 | Ambos: Estándar industrial |
| Simplicidad de la API | Clase única SecuritySettings | Múltiples métodos de seguridad | IronPDF: Enfoque unificado | |
| Manipulación de contenido | Método de redacción | Eliminación real del contenido, API de una línea | Superposición manual de rectángulos | IronPDF: Preparado para el cumplimiento de normativas |
| Marcado de agua | Basado en HTML/CSS, estilo completo | Basada en texto con rotación | IronPDF: Marcas de agua enriquecidas | |
| Conversiones de archivos | DOCX a PDF | DocxToPdfRenderer incorporado | Requiere la biblioteca Spire.Doc | IronPDF: Sin coste adicional |
| Métricas de rendimiento | Uso de la memoria | 150-200 MB (motor Chrome) | 80-120 MB | Spire: Menor huella de memoria |
| Soporte de Threading | Async/await nativo optimizado | Se requiere STA thread | IronPDF: Patrones asíncronos modernos | |
| Experiencia del desarrollador | Ejemplos de Código | más de 100 ejemplos listos para usar | Ejemplos básicos | IronPDF: Amplios recursos |
| Mensajes de error | Descriptiva y práctica | Mensajes técnicos | IronPDF: Mejor depuración | |
| Licensing & Pricing | Nivel inicial | Lite: $799 (1 dev, 1 project) | Developer: $1,199/year (1 dev) | IronPDF: Licencia perpetua |
| Team License | Plus: $1,199 (3 devs, 3 projects) | Sitio: $4,599 (10 desarrolladores) | IronPDF: Mejor valor para el equipo | |
| Opción Suite | Iron Suite: $1,498 (9 products) | Sin opción de suite | IronPDF: Valor excepcional | |
| Soporte | Soporte incluido | Sí, asistencia técnica 24/5 | Sólo foro (soporte de pago extra) | IronPDF: Soporte incluido |
| Canales de asistencia | Correo electrónico, chat, teléfono, pantalla compartida | Foro, correo electrónico (niveles de pago) | IronPDF: Más canales | |
| Mejor para | Casos de Uso | Aplicaciones web modernas, HTML/CSS complejo | Documentos sencillos, diseños básicos | Depende del contexto |
Para obtener más información detallada sobre IronPDF, visite IronPDF.com.
¿Cómo se compara la compatibilidad multiplataforma entre las bibliotecas?
HierroPDF
IronPDF se destaca por su amplia compatibilidad multiplataforma. Soporta una amplia gama de entornos dentro del marco .NET, asegurando un funcionamiento sin problemas en diferentes plataformas. A continuación, un resumen de la compatibilidad de IronPDF:
Versiones de .NET:
- Totalmente escrita en y soporta C#, VB.NET y F#
- .NET Core (8, 7, 6, 5, y 3.1+)
- .NET Standard (2.0+)
- .NET Framework (4.6.2+)
- Entornos de Aplicación: IronPDF funciona dentro de varios entornos de aplicación como Windows, Linux, Mac, Docker, Azure y AWS.
- IDEs: Funciona con IDEs como Microsoft Visual Studio y JetBrains Rider & ReSharper
- Sistemas Operativos y Procesadores: Soporta varios sistemas operativos y procesadores, incluidos Windows, Mac, Linux, x64, x86, ARM
Para más detalles sobre la compatibilidad de IronPDF, visite la Página de características de IronPDF.
Aguja.PDF
Spire.PDF tiene soporte completo dentro del entorno .NET, pero aunque funciona dentro del sistema operativo Windows, carece del soporte nativo para Linux y macOS que tiene IronPDF. Al implementar en macOS o Linux, Spire.PDF requiere diferentes complementos para cada plataforma, lo que puede complicar los escenarios de implementación.
- Soporte .NET:
- .NET Framework 2.0+
- .NET Core 2.0+
Escrito en C#, con soporte para VB.NET
- Entornos de Aplicación: Spire.PDF funciona en varios entornos de aplicación como Windows y aplicaciones ASP.NET. También puede soportar Windows Forms.
¿Qué biblioteca ofrece mejores funciones de conversión de HTML a PDF?
Características de IronPDF
- Conversión de PDF: IronPDF puede convertir HTML a PDF. Con su total soporte para los estándares web modernos, puedes estar seguro de que IronPDF devolverá constantemente PDFs en calidad píxel perfecta desde tu contenido HTML. IronPDF también puede convertir archivos PDF desde otros formatos como DOCX, imágenes, RTF y más.
- Generación de PDF: Con IronPDF, puede generar PDFs a partir de URLs, archivos ASPX o cadenas HTML.
- Características de seguridad: Con IronPDF, siempre puede estar seguro de que cualquier archivo PDF sensible será seguro gracias a sus características de seguridad. Usa IronPDF para encriptar tus archivos PDF, establecer contraseñas, y establecer permisos para tus archivos PDF.
- Características de edición de PDF: Con IronPDF puede procesar documentos PDF existentes, editarlos y leer archivos PDF con facilidad. IronPDF ofrece funciones de edición como agregar encabezados y pies de página, estampar texto e imágenes en las páginas PDF, agregar marcas de agua personalizadas al PDF, trabajar con formularios PDF y dividir o fusionar archivos PDF.
- Integración: Se integra perfectamente con aplicaciones ASP.NET y MVC.
- Soporte de versión PDF: Puede soportar la versión PDF 1.2-1.7
Para una lista completa de funciones de IronPDF, visite Características de IronPDF.
Características de Spire.PDF
- Creación de PDF: Crear PDFs desde cero o archivos existentes.
- Extracción de Texto e Imagen: Use Spire.PDF para extraer páginas y contenido de PDF.
- Manejo de Formularios PDF: Llenar y gestionar formularios PDF.
- Conversión de PDF: Convertir PDFs a otros formatos como HTML, RTF e imágenes.
- Manipulación de Páginas: Insertar, eliminar y reordenar páginas en un PDF.
- Soporte HTML limitado: El motor HTML a PDF tiene un soporte limitado para CSS moderno y JavaScript. El complemento predeterminado basado en Qt no soporta propiedades de página cortada de CSS o reconocimiento de archivo CSS externos, y la ejecución de JavaScript es una característica planificada que no está completamente implementada. Un convertidor ChromeHtml opcional está disponible para un mejor renderizado.
Renderización de Bootstrap y del marco CSS moderno
El desarrollo web moderno depende en gran medida de marcos CSS como Bootstrap para el desarrollo rápido de interfaces de usuario y el diseño responsivo. Las bibliotecas de generación de PDF deben convertir estos marcos con precisión para mantener la calidad profesional de los documentos y la consistencia del diseño.
HierroPDF: Soporte completo para Bootstrap y Tailwind
El motor Chromium de IronPDF ofrece soporte completo para todos los marcos CSS modernos:
- Bootstrap 5: Compatibilidad total con Flexbox y CSS Grid con todos los componentes responsivos
- Bootstrap 4: diseños de cartas completos, sistemas de navegación y clases de utilidad
- Tailwind CSS: todas las clases de utilidad y modificadores responsivos
- Fundación: Sistemas completos de red y componentes
- CSS3 moderno: Flexbox, Grid, propiedades personalizadas, animaciones y transformaciones
Demostrado con ejemplos reales: Página de inicio de Bootstrap y Plantillas de Bootstrap se convierten con precisión de píxeles perfecta.
Ejemplo de código: Tarjetas de miembros del equipo con Bootstrap
using IronPdf;
var renderer = new ChromePdfRenderer();
string bootstrapTeam = @"
<!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 my-5'>
<h1 class='text-center mb-5'>Our Team</h1>
<div class='row row-cols-1 row-cols-md-3 g-4'>
<div class='col'>
<div class='card h-100 shadow-sm text-center'>
<div class='card-body d-flex flex-column'>
<img src='https://via.placeholder.com/150' class='rounded-circle mx-auto mb-3' alt='Team member' style='width: 150px; height: 150px; object-fit: cover;'>
<h5 class='card-title'>Jennifer Martinez</h5>
<p class='text-muted mb-3'>Chief Technology Officer</p>
<p class='card-text flex-grow-1'>Leading our technical vision and innovation strategy with over 15 years of experience in software architecture.</p>
<div class='d-flex justify-content-center gap-2 mt-auto'>
<a href='#' class='btn btn-sm btn-outline-primary'>LinkedIn</a>
<a href='#' class='btn btn-sm btn-outline-secondary'>Email</a>
</div>
</div>
</div>
</div>
<div class='col'>
<div class='card h-100 shadow-sm text-center'>
<div class='card-body d-flex flex-column'>
<img src='https://via.placeholder.com/150' class='rounded-circle mx-auto mb-3' alt='Team member' style='width: 150px; height: 150px; object-fit: cover;'>
<h5 class='card-title'>David Chen</h5>
<p class='text-muted mb-3'>Head of Engineering</p>
<p class='card-text flex-grow-1'>Managing our engineering teams and ensuring product quality through rigorous testing and code review processes.</p>
<div class='d-flex justify-content-center gap-2 mt-auto'>
<a href='#' class='btn btn-sm btn-outline-primary'>LinkedIn</a>
<a href='#' class='btn btn-sm btn-outline-secondary'>Email</a>
</div>
</div>
</div>
</div>
<div class='col'>
<div class='card h-100 shadow-sm text-center'>
<div class='card-body d-flex flex-column'>
<img src='https://via.placeholder.com/150' class='rounded-circle mx-auto mb-3' alt='Team member' style='width: 150px; height: 150px; object-fit: cover;'>
<h5 class='card-title'>Sarah Johnson</h5>
<p class='text-muted mb-3'>Product Manager</p>
<p class='card-text flex-grow-1'>Driving product strategy and customer satisfaction through data-driven decisions and user research.</p>
<div class='d-flex justify-content-center gap-2 mt-auto'>
<a href='#' class='btn btn-sm btn-outline-primary'>LinkedIn</a>
<a href='#' class='btn btn-sm btn-outline-secondary'>Email</a>
</div>
</div>
</div>
</div>
</div>
<div class='text-center mt-5'>
<h3>Join Our Team</h3>
<p class='text-muted mb-3'>We're always looking for talented individuals to join our growing team.</p>
<a href='#' class='btn btn-primary btn-lg'>View Open Positions</a>
</div>
</div>
</body>
</html>";
var pdf = renderer.RenderHtmlAsPdf(bootstrapTeam);
pdf.SaveAs("team-members.pdf");using IronPdf;
var renderer = new ChromePdfRenderer();
string bootstrapTeam = @"
<!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 my-5'>
<h1 class='text-center mb-5'>Our Team</h1>
<div class='row row-cols-1 row-cols-md-3 g-4'>
<div class='col'>
<div class='card h-100 shadow-sm text-center'>
<div class='card-body d-flex flex-column'>
<img src='https://via.placeholder.com/150' class='rounded-circle mx-auto mb-3' alt='Team member' style='width: 150px; height: 150px; object-fit: cover;'>
<h5 class='card-title'>Jennifer Martinez</h5>
<p class='text-muted mb-3'>Chief Technology Officer</p>
<p class='card-text flex-grow-1'>Leading our technical vision and innovation strategy with over 15 years of experience in software architecture.</p>
<div class='d-flex justify-content-center gap-2 mt-auto'>
<a href='#' class='btn btn-sm btn-outline-primary'>LinkedIn</a>
<a href='#' class='btn btn-sm btn-outline-secondary'>Email</a>
</div>
</div>
</div>
</div>
<div class='col'>
<div class='card h-100 shadow-sm text-center'>
<div class='card-body d-flex flex-column'>
<img src='https://via.placeholder.com/150' class='rounded-circle mx-auto mb-3' alt='Team member' style='width: 150px; height: 150px; object-fit: cover;'>
<h5 class='card-title'>David Chen</h5>
<p class='text-muted mb-3'>Head of Engineering</p>
<p class='card-text flex-grow-1'>Managing our engineering teams and ensuring product quality through rigorous testing and code review processes.</p>
<div class='d-flex justify-content-center gap-2 mt-auto'>
<a href='#' class='btn btn-sm btn-outline-primary'>LinkedIn</a>
<a href='#' class='btn btn-sm btn-outline-secondary'>Email</a>
</div>
</div>
</div>
</div>
<div class='col'>
<div class='card h-100 shadow-sm text-center'>
<div class='card-body d-flex flex-column'>
<img src='https://via.placeholder.com/150' class='rounded-circle mx-auto mb-3' alt='Team member' style='width: 150px; height: 150px; object-fit: cover;'>
<h5 class='card-title'>Sarah Johnson</h5>
<p class='text-muted mb-3'>Product Manager</p>
<p class='card-text flex-grow-1'>Driving product strategy and customer satisfaction through data-driven decisions and user research.</p>
<div class='d-flex justify-content-center gap-2 mt-auto'>
<a href='#' class='btn btn-sm btn-outline-primary'>LinkedIn</a>
<a href='#' class='btn btn-sm btn-outline-secondary'>Email</a>
</div>
</div>
</div>
</div>
</div>
<div class='text-center mt-5'>
<h3>Join Our Team</h3>
<p class='text-muted mb-3'>We're always looking for talented individuals to join our growing team.</p>
<a href='#' class='btn btn-primary btn-lg'>View Open Positions</a>
</div>
</div>
</body>
</html>";
var pdf = renderer.RenderHtmlAsPdf(bootstrapTeam);
pdf.SaveAs("team-members.pdf");Resultado: Una página de equipo profesional con la cuadrícula de tarjetas de Bootstrap, alineación de flexbox, imágenes responsivas y componentes de botones, todo representado con precisión en el PDF.
Aguja.PDF: Compatibilidad limitada con HTML y marcos modernos
El motor HTML a PDF de Spire.PDF tiene limitaciones significativas para los marcos CSS modernos, como se señala en su propia documentación:
- Compatibilidad limitada con CSS: solo CSS básico, sin funciones CSS3 integrales
- Sin Flexbox: Bootstrap 4/5 dependen en gran medida de Flexbox, que no es compatible.
- Sin CSS Grid: los sistemas de diseño modernos que utilizan CSS Grid no se mostrarán correctamente
- Limitaciones de JavaScript: Ejecución mínima de JavaScript en comparación con los navegadores modernos
- Bootstrap 3 Máximo: Solo las versiones anteriores de Bootstrap basadas en tablas funcionan de manera confiable
- Los diseños complejos fallan: los diseños responsivos modernos requieren soluciones alternativas extensas
Problemas reportados por los desarrolladores con la conversión HTML de Spire.PDF:
- Las barras de navegación de Bootstrap se renderizan con problemas de layout
- Los componentes de tarjeta con flexbox no se alinean correctamente
- Los puntos de ruptura de la cuadrícula responsiva se ignoran en la salida PDF
- Las características CSS modernas requieren reescrituras manuales de CSS o retrocesos
Impacto en el desarrollo: Las aplicaciones que utilizan Bootstrap 4+ o marcos CSS modernos enfrentan desafíos importantes con Spire.PDF. Los equipos de desarrollo deben:
- Mantener CSS simplificado por separado específicamente para la generación de PDF (doble mantenimiento)
- Degradar a Bootstrap 3 o abandonar completamente los marcos (limita las características modernas)
- Probar y corregir manualmente extensamente cada componente (consumiendo tiempo y frágil)
Para proyectos que requieren soporte de marco CSS moderno, las limitaciones de renderizado HTML de Spire.PDF lo hacen inadecuado sin un esfuerzo de desarrollo adicional importante y una carga de mantenimiento continua.
Para obtener información detallada sobre compatibilidad con Bootstrap, consulte la Guía de Bootstrap & Flexbox CSS.
¿Cómo se comparan los ejemplos de código para tareas comunes en PDF?
Para ilustrar las capacidades de IronPDF y Spire.PDF para .NET, compararemos su implementación de varias funcionalidades clave de PDF a través de ejemplos de código, brindándole una idea de cómo estas características podrían ayudar con sus proyectos de PDF.
Convertir HTML a PDF
Ejemplo de IronPDF:
using IronPdf;
// Disable local disk access or cross-origin requests
Installation.EnableWebSecurity = true;
// Instantiate Renderer
var renderer = new ChromePdfRenderer();
// Create a PDF from an HTML string using C#
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
pdf.SaveAs("output.pdf");
// Advanced Example with HTML Assets
// Load external HTML assets: images, CSS, and JavaScript.
// An optional BasePath 'C:\site\assets\' is set as the file location to load assets from
var myAdvancedPdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"C:\site\assets\");
myAdvancedPdf.SaveAs("html-with-assets.pdf");using IronPdf;
// Disable local disk access or cross-origin requests
Installation.EnableWebSecurity = true;
// Instantiate Renderer
var renderer = new ChromePdfRenderer();
// Create a PDF from an HTML string using C#
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
pdf.SaveAs("output.pdf");
// Advanced Example with HTML Assets
// Load external HTML assets: images, CSS, and JavaScript.
// An optional BasePath 'C:\site\assets\' is set as the file location to load assets from
var myAdvancedPdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"C:\site\assets\");
myAdvancedPdf.SaveAs("html-with-assets.pdf");La clase ChromePdfRenderer en IronPDF aprovecha todo el motor del navegador Chrome para renderizar contenido HTML. Esto significa que las animaciones CSS3, la ejecución de JavaScript y las fuentes web modernas se renderizan exactamente como lo harían en Chrome. El método RenderHtmlAsPdf() acepta cadenas HTML y rutas base opcionales para cargar recursos externos, haciendo que sea sencillo convertir tanto documentos HTML simples como complejos. El renderizador soporta opciones avanzadas de renderizado incluyendo tamaños de papel personalizados, márgenes y configuraciones de retardo de JavaScript.
Ejemplo de Spire.PDF:
using Spire.Pdf;
using Spire.Pdf.HtmlConverter;
using System.IO;
using System.Threading;
using System.Drawing;
namespace ConvertHtmlStringToPdfWithoutPlugin
{
class Program
{
static void Main(string[] args)
{
// Create a PdfDocument object
PdfDocument doc = new PdfDocument();
// Create a PdfPageSettings object
PdfPageSettings setting = new PdfPageSettings();
// Set page size and margins through the object
setting.Size = new SizeF(1000, 1000);
setting.Margins = new Spire.Pdf.Graphics.PdfMargins(20);
// Create a PdfHtmlLayoutFormat object
PdfHtmlLayoutFormat htmlLayoutFormat = new PdfHtmlLayoutFormat();
// Set IsWaiting property to true
htmlLayoutFormat.IsWaiting = true;
// Read HTML string from a .html file
string htmlString = File.ReadAllText(@"C:\Users\Administrator\Desktop\Document\Html\Sample.html");
// Load HTML from HTML string using LoadFromHTML method
Thread thread = new Thread(() =>
{ doc.LoadFromHTML(htmlString, true, setting, htmlLayoutFormat); });
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
thread.Join();
// Save to a PDF file
doc.SaveToFile("HtmlStringToPdf.pdf");
}
}
}using Spire.Pdf;
using Spire.Pdf.HtmlConverter;
using System.IO;
using System.Threading;
using System.Drawing;
namespace ConvertHtmlStringToPdfWithoutPlugin
{
class Program
{
static void Main(string[] args)
{
// Create a PdfDocument object
PdfDocument doc = new PdfDocument();
// Create a PdfPageSettings object
PdfPageSettings setting = new PdfPageSettings();
// Set page size and margins through the object
setting.Size = new SizeF(1000, 1000);
setting.Margins = new Spire.Pdf.Graphics.PdfMargins(20);
// Create a PdfHtmlLayoutFormat object
PdfHtmlLayoutFormat htmlLayoutFormat = new PdfHtmlLayoutFormat();
// Set IsWaiting property to true
htmlLayoutFormat.IsWaiting = true;
// Read HTML string from a .html file
string htmlString = File.ReadAllText(@"C:\Users\Administrator\Desktop\Document\Html\Sample.html");
// Load HTML from HTML string using LoadFromHTML method
Thread thread = new Thread(() =>
{ doc.LoadFromHTML(htmlString, true, setting, htmlLayoutFormat); });
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
thread.Join();
// Save to a PDF file
doc.SaveToFile("HtmlStringToPdf.pdf");
}
}
}La conversión de HTML a PDF de Spire.PDF requiere la creación de múltiples objetos, incluyendo PdfDocument, PdfPageSettings y PdfHtmlLayoutFormat. La conversión debe ejecutarse en un hilo de apartamento único (STA), agregando complejidad a la implementación. Los usuarios han informado que "Spire genera un archivo PDF que es solo una imagen. Algunos de los CSS ni siquiera son correctos, como ignorar fuentes en negrita", indicando limitaciones en la fidelidad de renderizado CSS.
IronPDF utiliza el motor de renderizado de Chrome para la conversión de HTML a PDF de alta fidelidad, garantizando una representación precisa del contenido web gracias a su soporte para estándares web modernos. Spire.PDF también proporciona conversión de HTML a PDF robusta, pero puede no igualar la precisión de renderizado de IronPDF, y toma un enfoque más largo y manual.
¿Cómo cifrar documentos PDF?
Ejemplo de IronPDF:
using IronPdf;
using System;
// Open an Encrypted File, alternatively create a new PDF from HTML
var pdf = PdfDocument.FromFile("encrypted.pdf", "password");
// Edit file metadata
pdf.MetaData.Author = "Satoshi Nakamoto";
pdf.MetaData.Keywords = "SEO, Friendly";
pdf.MetaData.ModifiedDate = DateTime.Now;
// Edit file security settings
pdf.SecuritySettings.RemovePasswordsAndEncryption();
pdf.SecuritySettings.MakePdfDocumentReadOnly("secret-key");
pdf.SecuritySettings.AllowUserAnnotations = false;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserFormData = false;
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
// Change or set the document encryption password
pdf.Password = "my-password";
pdf.SaveAs("secured.pdf");using IronPdf;
using System;
// Open an Encrypted File, alternatively create a new PDF from HTML
var pdf = PdfDocument.FromFile("encrypted.pdf", "password");
// Edit file metadata
pdf.MetaData.Author = "Satoshi Nakamoto";
pdf.MetaData.Keywords = "SEO, Friendly";
pdf.MetaData.ModifiedDate = DateTime.Now;
// Edit file security settings
pdf.SecuritySettings.RemovePasswordsAndEncryption();
pdf.SecuritySettings.MakePdfDocumentReadOnly("secret-key");
pdf.SecuritySettings.AllowUserAnnotations = false;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserFormData = false;
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
// Change or set the document encryption password
pdf.Password = "my-password";
pdf.SaveAs("secured.pdf");La clase SecuritySettings de IronPDF proporciona un API comprensivo para gestionar la seguridad de PDF. Puede controlar permisos individuales con propiedades booleanas, establecer diferentes niveles de derechos de impresión y gestionar contraseñas por separado de otras configuraciones de seguridad. El diseño del API sigue convenciones .NET con enumeraciones tipadas como PdfPrintSecurity. Aprenda más sobre permisos y contraseñas de PDF en la documentación.
Ejemplo de Spire.PDF:
using Spire.Pdf;
using Spire.Pdf.Security;
// Create a PdfDocument object
PdfDocument pdf = new PdfDocument();
// Load a sample PDF file
pdf.LoadFromFile(@"E:\Files\sample.pdf");
// Encrypt the PDF file with a password
pdf.Security.Encrypt("open", "permission", PdfPermissionsFlags.Print | PdfPermissionsFlags.CopyContent, PdfEncryptionKeySize.Key128Bit);
// Save the result file
pdf.SaveToFile("Encrypt.pdf", FileFormat.PDF);using Spire.Pdf;
using Spire.Pdf.Security;
// Create a PdfDocument object
PdfDocument pdf = new PdfDocument();
// Load a sample PDF file
pdf.LoadFromFile(@"E:\Files\sample.pdf");
// Encrypt the PDF file with a password
pdf.Security.Encrypt("open", "permission", PdfPermissionsFlags.Print | PdfPermissionsFlags.CopyContent, PdfEncryptionKeySize.Key128Bit);
// Save the result file
pdf.SaveToFile("Encrypt.pdf", FileFormat.PDF);El enfoque de cifrado de Spire.PDF utiliza el método Security.Encrypt() con banderas bitwise para permisos. Aunque más compacto, este enfoque requiere entendimiento de las operaciones bitwise y ofrece menos control granular comparado con las propiedades de permisos individuales de IronPDF.
Ambas bibliotecas proporcionan métodos fáciles de usar para cifrar PDFs y establecer la legibilidad de los documentos PDF cifrados. IronPDF ofrece un enfoque sencillo mientras sigue dando control total sobre las configuraciones de seguridad de su PDF. Spire.PDF toma un proceso ligeramente más corto pero todavía incluye opciones adicionales para establecer permisos.
¿Cuáles son las opciones para censurar el contenido de un PDF?
Ejemplo de IronPDF:
using IronPdf;
// Load the PDF document
PdfDocument pdf = PdfDocument.FromFile("novel.pdf");
// Redact 'are' phrase from all pages
pdf.RedactTextOnAllPages("are");
// Save the redacted document
pdf.SaveAs("redacted.pdf");using IronPdf;
// Load the PDF document
PdfDocument pdf = PdfDocument.FromFile("novel.pdf");
// Redact 'are' phrase from all pages
pdf.RedactTextOnAllPages("are");
// Save the redacted document
pdf.SaveAs("redacted.pdf");IronPDF proporciona un API de redacción dedicado que realiza una eliminación verdadera de contenido, no sólo enmascaramiento visual. El método RedactTextOnAllPages() busca y elimina permanentemente el texto especificado, asegurando el cumplimiento de las regulaciones de protección de datos. Métodos adicionales permiten la redacción en páginas o regiones específicas.
Ejemplo de Spire.PDF para Redacción vía Superposición de Rectángulo:
Aunque Spire.PDF no tiene una herramienta de redacción dedicada, el contenido todavía puede ser redactado utilizando un proceso manual, como se muestra a continuación:
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;
// Specify the input PDF file path
string inputPdfFilePath = "path/to/your/input.pdf";
// Specify the output redacted PDF file path
string outputPdfFilePath = "path/to/your/redacted_output.pdf";
// Create a new PdfDocument object
PdfDocument pdfDocument = new PdfDocument();
// Load the existing PDF document
pdfDocument.LoadFromFile(inputPdfFilePath);
// Redact content on each page
foreach (PdfPageBase page in pdfDocument.Pages)
{
// Define the area to redact (e.g., coordinates and size of the rectangle)
RectangleF redactArea = new RectangleF(100, 100, 200, 50); // Example coordinates and size
// Apply redaction
page.Canvas.DrawRectangle(new PdfSolidBrush(Color.Black), redactArea);
}
// Save the redacted PDF document
pdfDocument.SaveToFile(outputPdfFilePath);using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;
// Specify the input PDF file path
string inputPdfFilePath = "path/to/your/input.pdf";
// Specify the output redacted PDF file path
string outputPdfFilePath = "path/to/your/redacted_output.pdf";
// Create a new PdfDocument object
PdfDocument pdfDocument = new PdfDocument();
// Load the existing PDF document
pdfDocument.LoadFromFile(inputPdfFilePath);
// Redact content on each page
foreach (PdfPageBase page in pdfDocument.Pages)
{
// Define the area to redact (e.g., coordinates and size of the rectangle)
RectangleF redactArea = new RectangleF(100, 100, 200, 50); // Example coordinates and size
// Apply redaction
page.Canvas.DrawRectangle(new PdfSolidBrush(Color.Black), redactArea);
}
// Save the redacted PDF document
pdfDocument.SaveToFile(outputPdfFilePath);Este enfoque manual requiere calcular coordenadas exactas para cada área de redacción y sólo proporciona enmascaramiento visual en lugar de una verdadera eliminación de contenido. El texto subyacente aún puede ser extraído a través de herramientas de edición de PDF.
IronPDF simplifica la redacción con su herramienta robusta, pero sencilla, de redacción. Spire.PDF requiere más manejo manual para la redacción debido a la ausencia de una herramienta de redacción incorporada, resultando en flujos de trabajo potencialmente menos eficientes.
¿Cómo se firman los documentos PDF?
Ejemplo de IronPDF:
using IronPdf;
using IronPdf.Signing;
using System.Security.Cryptography.X509Certificates;
// Instantiate the renderer
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>foo</h1>");
// Create X509Certificate2 object with X509KeyStorageFlags set to Exportable
X509Certificate2 cert = new X509Certificate2("IronSoftware.pfx", "123456", X509KeyStorageFlags.Exportable);
// Create PdfSignature with certificate
var sig = new PdfSignature(cert);
// Sign PDF document
pdf.Sign(sig);
pdf.SaveAs("signed.pdf");using IronPdf;
using IronPdf.Signing;
using System.Security.Cryptography.X509Certificates;
// Instantiate the renderer
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>foo</h1>");
// Create X509Certificate2 object with X509KeyStorageFlags set to Exportable
X509Certificate2 cert = new X509Certificate2("IronSoftware.pfx", "123456", X509KeyStorageFlags.Exportable);
// Create PdfSignature with certificate
var sig = new PdfSignature(cert);
// Sign PDF document
pdf.Sign(sig);
pdf.SaveAs("signed.pdf");La implementación de firma digital de IronPDF sigue patrones de manejo de certificados en .NET. La clase PdfSignature acepta objetos estándar X509Certificate2 y maneja las complejidades de la firma PDF internamente. También puede agregar apariencias visuales de firma y configurar campos de firma.
Ejemplo de Spire.PDF:
using Spire.Pdf;
using Spire.Pdf.Security;
using System.Drawing;
// Create a PdfDocument object
PdfDocument doc = new PdfDocument();
// Load a sample PDF file
doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\sample.pdf");
// Load the certificate
PdfCertificate cert = new PdfCertificate("C:\\Users\\Administrator\\Desktop\\MyCertificate.pfx", "e-iceblue");
// Create a PdfSignature object and specify its position and size
PdfSignature signature = new PdfSignature(doc, doc.Pages[doc.Pages.Count - 1], cert, "MySignature");
RectangleF rectangleF = new RectangleF(doc.Pages[0].ActualSize.Width - 260 - 54 , 200, 260, 110);
signature.Bounds = rectangleF;
signature.Certificated = true;
// Set the graphics mode to ImageAndSignDetail
signature.GraphicsMode = GraphicMode.SignImageAndSignDetail;
// Set various details about the signature
signature.NameLabel = "Signer:";
signature.Name = "Gary";
signature.ContactInfoLabel = "Phone:";
signature.ContactInfo = "0123456";
signature.DateLabel = "Date:";
signature.Date = DateTime.Now;
signature.LocationInfoLabel = "Location:";
signature.LocationInfo = "USA";
signature.ReasonLabel = "Reason:";
signature.Reason = "I am the author";
signature.DistinguishedNameLabel = "DN:";
signature.DistinguishedName = signature.Certificate.IssuerName.Name;
// Set the signature image source
signature.SignImageSource = PdfImage.FromFile("C:\\Users\\Administrator\\Desktop\\handwrittingSignature.png");
// Set the signature font
signature.SignDetailsFont = new PdfTrueTypeFont(new Font("Arial Unicode MS", 12f, FontStyle.Regular));
// Set the document permission to forbid changes but allow form fill
signature.DocumentPermissions = PdfCertificationFlags.ForbidChanges | PdfCertificationFlags.AllowFormFill;
// Save to file
doc.SaveToFile("VisiableSignature.pdf");using Spire.Pdf;
using Spire.Pdf.Security;
using System.Drawing;
// Create a PdfDocument object
PdfDocument doc = new PdfDocument();
// Load a sample PDF file
doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\sample.pdf");
// Load the certificate
PdfCertificate cert = new PdfCertificate("C:\\Users\\Administrator\\Desktop\\MyCertificate.pfx", "e-iceblue");
// Create a PdfSignature object and specify its position and size
PdfSignature signature = new PdfSignature(doc, doc.Pages[doc.Pages.Count - 1], cert, "MySignature");
RectangleF rectangleF = new RectangleF(doc.Pages[0].ActualSize.Width - 260 - 54 , 200, 260, 110);
signature.Bounds = rectangleF;
signature.Certificated = true;
// Set the graphics mode to ImageAndSignDetail
signature.GraphicsMode = GraphicMode.SignImageAndSignDetail;
// Set various details about the signature
signature.NameLabel = "Signer:";
signature.Name = "Gary";
signature.ContactInfoLabel = "Phone:";
signature.ContactInfo = "0123456";
signature.DateLabel = "Date:";
signature.Date = DateTime.Now;
signature.LocationInfoLabel = "Location:";
signature.LocationInfo = "USA";
signature.ReasonLabel = "Reason:";
signature.Reason = "I am the author";
signature.DistinguishedNameLabel = "DN:";
signature.DistinguishedName = signature.Certificate.IssuerName.Name;
// Set the signature image source
signature.SignImageSource = PdfImage.FromFile("C:\\Users\\Administrator\\Desktop\\handwrittingSignature.png");
// Set the signature font
signature.SignDetailsFont = new PdfTrueTypeFont(new Font("Arial Unicode MS", 12f, FontStyle.Regular));
// Set the document permission to forbid changes but allow form fill
signature.DocumentPermissions = PdfCertificationFlags.ForbidChanges | PdfCertificationFlags.AllowFormFill;
// Save to file
doc.SaveToFile("VisiableSignature.pdf");Spire.PDF proporciona control extenso sobre la apariencia de la firma pero requiere significativamente más código. Debe establecer manualmente cada etiqueta, posicionar la firma con precisión y configurar elementos visuales por separado.
Firmar digitalmente PDFs puede ser útil en varios escenarios, desde usarse para autenticar documentos PDF hasta simplemente aprobar un nuevo proyecto. IronPDF ofrece un enfoque sencillo para agregar firmas digitales, permitiendo una fácil automatización del proceso de firma. Spire.PDF también admite firmas digitales para PDFs; sin embargo, el proceso puede ser más manual y requerir más esfuerzo para implementar.
¿Qué métodos existen para poner marcas de agua a los PDF?
Ejemplo de IronPDF:
using IronPdf;
// Stamps a Watermark onto a new or existing PDF
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf");
pdf.ApplyWatermark("<h2 style='color:red'>SAMPLE</h2>", 30, IronPdf.Editing.VerticalAlignment.Middle, IronPdf.Editing.HorizontalAlignment.Center);
pdf.SaveAs(@"C:\Path\To\Watermarked.pdf");using IronPdf;
// Stamps a Watermark onto a new or existing PDF
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf");
pdf.ApplyWatermark("<h2 style='color:red'>SAMPLE</h2>", 30, IronPdf.Editing.VerticalAlignment.Middle, IronPdf.Editing.HorizontalAlignment.Center);
pdf.SaveAs(@"C:\Path\To\Watermarked.pdf");La característica de marcado de agua de IronPDF acepta contenido HTML, permitiéndole usar CSS para el estilo. El método ApplyWatermark() proporciona parámetros para el ángulo de rotación y la alineación, facilitando la posición precisa de las marcas de agua. Aprenda más sobre marcas de agua personalizadas y opciones avanzadas de estilo.
Ejemplo de Spire.PDF:
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;
// Create a PdfDocument object
PdfDocument pdf = new PdfDocument();
// Load a sample PDF document
pdf.LoadFromFile(@"C:\Users\Administrator\Desktop\sample.pdf");
// Create a PdfTrueTypeFont object
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial", 50f), true);
// Set the watermark text
string text = "CONFIDENTIAL";
// Measure the text size
SizeF textSize = font.MeasureString(text);
// Calculate the values of two offset variables,
// which will be used to calculate the translation amount of the coordinate system
float offset1 = (float)(textSize.Width * System.Math.Sqrt(2) / 4);
float offset2 = (float)(textSize.Height * System.Math.Sqrt(2) / 4);
// Traverse all the pages in the document
foreach (PdfPageBase page in pdf.Pages)
{
// Set the page transparency
page.Canvas.SetTransparency(0.8f);
// Translate the coordinate system by specified coordinates
page.Canvas.TranslateTransform(page.Canvas.Size.Width / 2 - offset1 - offset2, page.Canvas.Size.Height / 2 + offset1 - offset2);
// Rotate the coordinate system 45 degrees counterclockwise
page.Canvas.RotateTransform(-45);
// Draw watermark text on the page
page.Canvas.DrawString(text, font, PdfBrushes.DarkGray, 0, 0);
}
// Save the changes to another file
pdf.SaveToFile("TextWatermark.pdf");using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;
// Create a PdfDocument object
PdfDocument pdf = new PdfDocument();
// Load a sample PDF document
pdf.LoadFromFile(@"C:\Users\Administrator\Desktop\sample.pdf");
// Create a PdfTrueTypeFont object
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial", 50f), true);
// Set the watermark text
string text = "CONFIDENTIAL";
// Measure the text size
SizeF textSize = font.MeasureString(text);
// Calculate the values of two offset variables,
// which will be used to calculate the translation amount of the coordinate system
float offset1 = (float)(textSize.Width * System.Math.Sqrt(2) / 4);
float offset2 = (float)(textSize.Height * System.Math.Sqrt(2) / 4);
// Traverse all the pages in the document
foreach (PdfPageBase page in pdf.Pages)
{
// Set the page transparency
page.Canvas.SetTransparency(0.8f);
// Translate the coordinate system by specified coordinates
page.Canvas.TranslateTransform(page.Canvas.Size.Width / 2 - offset1 - offset2, page.Canvas.Size.Height / 2 + offset1 - offset2);
// Rotate the coordinate system 45 degrees counterclockwise
page.Canvas.RotateTransform(-45);
// Draw watermark text on the page
page.Canvas.DrawString(text, font, PdfBrushes.DarkGray, 0, 0);
}
// Save the changes to another file
pdf.SaveToFile("TextWatermark.pdf");El marcado de agua de Spire.PDF requiere cálculo manual de la posición y rotación utilizando transformaciones del sistema de coordenadas. Si bien esto proporciona control fino, requiere comprensión de conceptos de programación gráfica.
IronPDF proporciona un método fácil para agregar marcas de agua de texto mientras le da control total sobre la posición y el diseño de la marca de agua. El uso de IronPDF de HTML y CSS hace que el proceso sea más fácil si tiene experiencia con estos lenguajes. El enfoque de Spire.PDF es más largo con un proceso más manual pero todavía proporciona una fuerte herramienta de marcaje de agua con control total sobre el diseño y la posición.
¿Cómo estampar imágenes y texto en PDF?
Ejemplo de IronPDF:
using IronPdf;
using IronPdf.Editing;
// Instantiate Renderer
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>");
// Create text stamper
TextStamper textStamper = new TextStamper()
{
Text = "Text Stamper!",
FontFamily = "Bungee Spice",
UseGoogleFont = true,
FontSize = 30,
IsBold = true,
IsItalic = true,
VerticalAlignment = VerticalAlignment.Top,
};
// Stamp the text stamper
pdf.ApplyStamp(textStamper);
pdf.SaveAs("stampText.pdf");
// Create image stamper
ImageStamper imageStamper = new ImageStamper(new Uri("https://ironpdf.com/img/svgs/iron-pdf-logo.svg"))
{
VerticalAlignment = VerticalAlignment.Top,
};
// Stamp the image stamper
pdf.ApplyStamp(imageStamper, 0);
pdf.SaveAs("stampImage.pdf");using IronPdf;
using IronPdf.Editing;
// Instantiate Renderer
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>");
// Create text stamper
TextStamper textStamper = new TextStamper()
{
Text = "Text Stamper!",
FontFamily = "Bungee Spice",
UseGoogleFont = true,
FontSize = 30,
IsBold = true,
IsItalic = true,
VerticalAlignment = VerticalAlignment.Top,
};
// Stamp the text stamper
pdf.ApplyStamp(textStamper);
pdf.SaveAs("stampText.pdf");
// Create image stamper
ImageStamper imageStamper = new ImageStamper(new Uri("https://ironpdf.com/img/svgs/iron-pdf-logo.svg"))
{
VerticalAlignment = VerticalAlignment.Top,
};
// Stamp the image stamper
pdf.ApplyStamp(imageStamper, 0);
pdf.SaveAs("stampImage.pdf");El API de estampación de IronPDF utiliza clases dedicadas para diferentes tipos de estampillas. El TextStamper admite fuentes de Google directamente a través de la propiedad UseGoogleFont, mientras que ImageStamper puede cargar imágenes desde URLs o archivos locales. Ambos estampadores comparten propiedades de alineación comunes para una posición consistente. Explore más opciones de estampado incluyendo estampadores HTML e integración de código de barras.
Spire.PDF (Ejemplo de Estampado de Texto):
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;
// Assumes a PdfDocument is already loaded as `doc` object
PdfPageBase page = doc.Pages[0];
PdfGraphicsState state = page.Canvas.Save();
// Define font and brushes for different effects
PdfFont font = new PdfFont(PdfFontFamily.Helvetica, 18f);
PdfSolidBrush brush1 = new PdfSolidBrush(Color.DeepSkyBlue);
PdfSolidBrush brush2 = new PdfSolidBrush(Color.CadetBlue);
// Apply transformations and draw strings with shadow and effect
page.Canvas.TranslateTransform(20, 200);
page.Canvas.ScaleTransform(1f, 0.6f);
page.Canvas.SkewTransform(-10, 0);
page.Canvas.DrawString("Go! Turn Around! Go! Go! Go!", font, brush1, 0, 0);
page.Canvas.SkewTransform(10, 0);
page.Canvas.DrawString("Go! Turn Around! Go! Go! Go!", font, brush2, 0, 0);
page.Canvas.ScaleTransform(1f, -1f);
page.Canvas.DrawString("Go! Turn Around! Go! Go! Go!", font, brush2, 0, -2 * 18);
// Restore graphics to previous state
page.Canvas.Restore(state);using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;
// Assumes a PdfDocument is already loaded as `doc` object
PdfPageBase page = doc.Pages[0];
PdfGraphicsState state = page.Canvas.Save();
// Define font and brushes for different effects
PdfFont font = new PdfFont(PdfFontFamily.Helvetica, 18f);
PdfSolidBrush brush1 = new PdfSolidBrush(Color.DeepSkyBlue);
PdfSolidBrush brush2 = new PdfSolidBrush(Color.CadetBlue);
// Apply transformations and draw strings with shadow and effect
page.Canvas.TranslateTransform(20, 200);
page.Canvas.ScaleTransform(1f, 0.6f);
page.Canvas.SkewTransform(-10, 0);
page.Canvas.DrawString("Go! Turn Around! Go! Go! Go!", font, brush1, 0, 0);
page.Canvas.SkewTransform(10, 0);
page.Canvas.DrawString("Go! Turn Around! Go! Go! Go!", font, brush2, 0, 0);
page.Canvas.ScaleTransform(1f, -1f);
page.Canvas.DrawString("Go! Turn Around! Go! Go! Go!", font, brush2, 0, -2 * 18);
// Restore graphics to previous state
page.Canvas.Restore(state);Spire.PDF requiere manipulación directa del lienzo con transformaciones manuales para cada efecto. Crear estampillas complejas implica entender la administración del estado gráfico y las transformaciones de coordenadas.
La herramienta de estampado de texto e imagen de IronPDF es una poderosa herramienta de estampado fácil de usar que sigue un enfoque similar a HTML y CSS cuando aplica el contenido estampado. Mientras que Spire.PDF también ofrece una herramienta básica de estampado de texto, requiere más esfuerzo para aplicar el texto estampado a sus archivos PDF.
¿Qué biblioteca gestiona mejor la conversión de DOCX a PDF?
Ejemplo de IronPDF:
using IronPdf;
// Instantiate Renderer
DocxToPdfRenderer renderer = new DocxToPdfRenderer();
// Render from DOCX file
PdfDocument pdf = renderer.RenderDocxAsPdf("Modern-chronological-resume.docx");
// Save the PDF
pdf.SaveAs("pdfFromDocx.pdf");using IronPdf;
// Instantiate Renderer
DocxToPdfRenderer renderer = new DocxToPdfRenderer();
// Render from DOCX file
PdfDocument pdf = renderer.RenderDocxAsPdf("Modern-chronological-resume.docx");
// Save the PDF
pdf.SaveAs("pdfFromDocx.pdf");IronPDF incluye una clase dedicada DocxToPdfRenderer que maneja la conversión de DOCX de manera nativa. El API es consistente con otras clases de renderizado en IronPDF, requiriendo solo dos líneas de código para la conversión básica. Opciones avanzadas para configuración de página y formateo están disponibles a través de las propiedades del renderizador. Aprenda más sobre características de conversión de DOCX a PDF.
Spire.PDF Usando Spire.Doc para Conversión de DOCX a PDF:
Spire.PDF en sí mismo no puede convertir DOCX a PDF; sin embargo, la biblioteca Spire.Doc se puede usar para manejar esta conversión, y luego puede utilizar Spire.PDF para trabajar en el PDF resultante.
using Spire.Doc;
// Create a Document object
Document doc = new Document();
// Load a Word document
doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Sample.docx");
// Save the document to PDF
doc.SaveToFile("ToPDF.pdf", FileFormat.PDF);
// Dispose of resources
doc.Dispose();using Spire.Doc;
// Create a Document object
Document doc = new Document();
// Load a Word document
doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Sample.docx");
// Save the document to PDF
doc.SaveToFile("ToPDF.pdf", FileFormat.PDF);
// Dispose of resources
doc.Dispose();Este enfoque requiere la compra y administración de una biblioteca adicional (Spire.Doc), aumentando tanto el costo como la complejidad.
IronPDF ofrece soporte integrado para la conversión directa de DOCX a PDF, lo que significa que ahorra tiempo sin necesitar bibliotecas adicionales para manejar esta tarea. Spire.PDF, por otro lado, no puede manejar directamente la conversión de DOCX a PDF, requiriendo la biblioteca Spire.Doc para convertir archivos DOCX a PDF.
¿Qué revelan las métricas de rendimiento?
Basado en pruebas y comentarios de usuarios, aquí está cómo se comparan las bibliotecas en el uso del mundo real:
Rendimiento de la renderización
Para layouts básicos, Spire.PDF está optimizado para contenido simple como tablas estáticas o texto estilizado básico, lo que lo hace rápido y eficiente para estos casos de uso. Sin embargo, al tratar con HTML complejo que contiene características modernas de CSS3, JavaScript o layouts responsivos, el motor basado en Chrome de IronPDF proporciona resultados más precisos a costa de tiempos de renderizado ligeramente más altos.
Uso de la memoria
Spire.PDF generalmente usa menos memoria (80-120MB) comparado con IronPDF (150-200MB) debido a su motor de renderizado más simple. Sin embargo, esto viene al costo de fidelidad de renderizado y soporte de características. Para aplicaciones donde la memoria es crítica y la complejidad de HTML es mínima, Spire.PDF puede ser ventajoso.
Soporte Threading y Async
IronPDF ofrece soporte nativo async/await con métodos como RenderHtmlAsPdfAsync(), haciéndolo adecuado para aplicaciones .NET modernas. Spire.PDF requiere manejo manual del hilo con hilos STA, agregando complejidad a las aplicaciones multi-hilo.
¿Cómo se comparan los modelos de precios y licencias?
Precios y licencias de IronPDF
IronPDF ofrece varios niveles y características adicionales para la compra de una licencia. Los desarrolladores también pueden comprar Iron Suite que da acceso a todos los productos de Iron Software al precio de dos. Si no está listo para comprar una licencia, IronPDF proporciona una prueba gratuita que dura 30 días.
Precios (a partir de 2025):
- Licencias perpetuas: Ofrece una gama de licencias perpetuas dependiendo del tamaño de su equipo, las necesidades de su proyecto y el número de ubicaciones. Cada tipo de licencia viene con soporte por correo electrónico.
- Licencia Lite: Esta licencia cuesta $799 y admite un desarrollador, una ubicación y un proyecto.
- Licencia Plus: Apoyando a tres desarrolladores, tres ubicaciones y tres proyectos, este es el siguiente paso desde la licencia lite y cuesta $1,199. La licencia Plus ofrece soporte por chat y soporte telefónico además del soporte básico por correo electrónico.
- Licencia Profesional: Esta licencia es adecuada para equipos más grandes, apoyando a diez desarrolladores, diez ubicaciones y diez proyectos por $2,399. Ofrece los mismos canales de soporte de contacto que los niveles anteriores pero también ofrece soporte de compartir pantalla.
- Redistribución libre de regalías: La licencia de IronPDF también ofrece cobertura de redistribución libre de regalías por un extra de $2,399
- Soporte de producto ininterrumpido: IronPDF ofrece acceso a actualizaciones continuas de producto, mejoras de características de seguridad, y soporte de su equipo de ingeniería por $999/año o una compra única de $1,999 por una cobertura de 5 años.
- Iron Suite: Por $1,498, obtienes acceso a todos los productos de Iron Software, incluidos IronPDF, IronOCR, IronWord, IronXL, IronBarcode, IronQR, IronZIP, IronPrint y IronWebScraper.
IronPDF ofrece opciones de licencias flexibles con licencias perpetuas y soporte comprensivo incluido
Precios y licencias de Spire.PDF
Spire.PDF ofrece una gama de licencias dependiendo de sus necesidades.
- Versión gratuita: Spire.PDF ofrece una versión gratuita limitada a 10 páginas de PDF; más allá de esto, necesitaría comprar una licencia paga.
- Suscripción para Desarrolladores: Con precio de $999 o $1,199 por año dependiendo del tipo de soporte que necesite, esta opción es para desarrolladores que necesitan construir características relacionadas con PDF pero no requieren derechos de distribución OEM.
- Suscripción para Desarrolladores OEM: Cuesta alrededor de $2,549 - $4,248 por año dependiendo de la cantidad de soporte que necesite, e incluye actualizaciones gratuitas, soporte premium y la capacidad de distribuir la aplicación a usuarios finales.
- Pequeña Empresa del Sitio: Con precio de $4,599 o $7,598 dependiendo del soporte que desee, este nivel de licencia soporta hasta 10 desarrolladores en hasta 10 ubicaciones, actualizaciones por 1 año y recursos técnicos gratuitos en línea.
- Suscripción OEM del Sitio: Cuesta $13,088 - $16,687 por año dependiendo del tipo de soporte que necesite y está dirigida a empresas más grandes que necesitan implementar aplicaciones en múltiples ubicaciones.
¿Qué biblioteca ofrece mejor documentación y soporte?
HierroPDF
IronPDF sobresale en proporcionar documentación extensa y soporte:
- Documentación Comprensiva: Documentación extensa y fácil de usar que cubre todas las características.
- Soporte 24/5: Soporte activo de ingenieros disponible.
- Tutoriales en Video: Guías paso a paso en video disponibles en YouTube.
- Foro Comunitario: Comunidad comprometida para soporte adicional.
- Actualizaciones Regulares: Actualizaciones mensuales del producto para asegurar las últimas características y parches de seguridad.
- Referencia del API de PDF: Ofrece referencias del API para que pueda sacar el máximo provecho de lo que nuestras herramientas tienen para ofrecer.
Para obtener más información, consulte la extensa documentación de IronPDF y visite el Canal de YouTube de Iron Software.
Documentación y soporte de Spire.PDF para .NET
- Foros: Spire.PDF tiene un foro donde los usuarios pueden interactuar entre sí, compartiendo consejos, usos y problemas encontrados con Spire.PDF.
- Ejemplos de Código: Spire.PDF ofrece ejemplos de código en su sitio web para mostrar cómo usar el producto en varios casos de uso.
- Boletines: Spire.PDF ofrece un boletín para desarrolladores para anuncios de actualizaciones y otra información importante.
- Soporte: El soporte es principalmente a través de foros, con soporte pagado por email/teléfono disponible a un costo adicional según la versión de la licencia.
¿Cuáles son las experiencias y opiniones más comunes de los desarrolladores?
Basado en los comentarios de la comunidad y el uso en el mundo real:
Comentarios sobre IronPDF
Los desarrolladores consistentemente elogian a IronPDF por proporcionar "una representación más completa y precisa de la página HTML original". La capacidad de la biblioteca para manejar diseños de CSS3 complejos, páginas pesadas en JavaScript y marcos web modernos la convierte en una elección preferida para aplicaciones que requieren generación de PDF de alta fidelidad.
Los puntos positivos comunes incluyen:
- Diseño de API intuitivo que reduce el tiempo de desarrollo
- Excelente calidad de renderizado que coincide con la salida del navegador
- Documentación completa con ejemplos prácticos
- Soporte técnico receptivo
Comentarios sobre Spire.PDF
Los comentarios de la comunidad indican que "Spire genera un archivo PDF que es solo una imagen. Parte del css no es ni siquiera correcto, como ignorar las fuentes en negrita". Además, el soporte de JavaScript sigue siendo una característica planificada que "sería tan difícil que no se completa en poco tiempo" según las respuestas del soporte oficial.
Las inquietudes comunes incluyen:
- Soporte limitado para CSS3 y estándares web modernos
- Falta de capacidad de ejecución de JavaScript
- Requisitos de subprocesos complejos para la conversión de HTML
- Requisitos de bibliotecas adicionales para ciertas características
¿Cuándo elegir cada biblioteca?
Elija IronPDF cuando:
- Tu HTML contiene CSS3 moderno, JavaScript o diseños receptivos
- Necesitas un renderizado perfecto en píxeles que coincida con la salida del navegador
- Se requiere despliegue multiplataforma (Linux, macOS, Docker)
- Quieres soporte completo incluido con tu licencia
- Necesitas características integradas como la conversión DOCX sin bibliotecas adicionales
- Tu equipo valora el desarrollo rápido con código mínimo
Elija Spire.PDF cuando:
- Tus PDFs contienen solo HTML básico con estilo simple
- El uso de memoria es una restricción crítica
- Trabajas principalmente en entornos Windows
- Tu HTML no requiere ejecución de JavaScript
- Ya usas otros productos Spire en tu stack
Conclusión
En conclusión, IronPDF y Spire.PDF para .NET son ambas herramientas capaces para manejar documentos PDF en aplicaciones .NET. IronPDF sobresale en facilidad de uso, compatibilidad multiplataforma y soporte para estándares web modernos, convirtiéndose en una elección preferida si buscas mejorar tu trabajo con documentos PDF. Spire.PDF ofrece un conjunto de características comprensivo pero puede requerir más esfuerzo para tareas complejas y carece de la precisión de renderizado que exigen las aplicaciones web modernas.
Para desarrolladores que trabajan con tecnologías web contemporáneas, requieren una conversión precisa de HTML a PDF o necesitan soporte confiable multiplataforma, IronPDF presenta una solución más completa. Su motor de renderizado basado en Chrome, API intuitiva y soporte completo lo hacen particularmente adecuado para aplicaciones empresariales y escenarios de generación de documentos complejos.
Puedes probar el prueba gratuita de 30 días para verificar sus funciones disponibles.
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.
¿IronPDF admite la ejecución de JavaScript durante la conversión de HTML a PDF?
Sí, IronPDF admite la ejecución completa de JavaScript, haciéndolo ideal para convertir contenido dinámico o diseños dependientes de JavaScript en PDF.
¿Qué plataformas son compatibles con IronPDF para la conversión de PDF?
IronPDF ofrece soporte nativo en múltiples plataformas, incluyendo Windows, Linux, macOS, Docker, así como servicios en la nube como Azure y AWS.
¿Cómo se compara el uso de memoria de IronPDF con Spire.PDF?
IronPDF utiliza algo más de memoria, típicamente entre 150-200MB, en comparación con los 80-120MB de Spire.PDF, pero proporciona mejor calidad de renderizado y soporta patrones modernos async/await.
¿Puede IronPDF convertir archivos DOCX a PDF directamente?
Sí, IronPDF incluye capacidades de conversión de DOCX a PDF integradas a través de su clase DocxToPdfRenderer sin requerir bibliotecas adicionales.
¿Cuáles son las opciones de licencia para IronPDF?
IronPDF ofrece licencias perpetuas desde $749 para desarrolladores individuales, incluyendo todas las características y soporte. También proporciona un paquete Iron Suite con 9 productos por $1,498.
¿Qué tipo de soporte ofrece IronPDF?
IronPDF ofrece soporte de ingeniería 24/5 a través de correo electrónico, chat, teléfono y compartir pantalla con todas las licencias, asegurando asistencia integral.
¿Cómo puedo asegurar la seguridad y encriptación del PDF con IronPDF?
IronPDF soporta encriptación AES-256 y protección con contraseña a través de su clase SecuritySettings, permitiendo control granular sobre los permisos del PDF.
¿Es IronPDF adecuado para renderizar páginas web complejas con CSS moderno?
Sí, IronPDF utiliza un motor de renderizado completo de Chrome que soporta CSS3, flexbox, disposiciones de grid, fuentes web y JavaScript, haciéndolo bien apto para páginas web complejas.
¿Cuáles son las limitaciones de la versión gratuita de IronPDF?
IronPDF ofrece una prueba gratuita completamente funcional de 30 días sin límites de páginas, proporcionando amplia oportunidad para probar todas sus características antes de comprometerse con una compra.
¿Cómo asegura IronPDF un renderizado HTML de alta calidad?
IronPDF ofrece un renderizado perfecto que coincide con la salida del navegador Chrome, asegurando alta fidelidad y representación precisa del contenido HTML original.






