IronPDF vs ExpertPDF: ¿Qué biblioteca PDF de C# deberían elegir los desarrolladores sénior de .NET?
IronPDF se destaca en la conversión de HTML a PDF con la precisión del motor Chrome V8 y API intuitivas, mientras que ExpertPDF ofrece capacidades básicas de PDF con requisitos de configuración más complejos para sistemas de producción .NET.
Los desarrolladores de C# a menudo enfrentan desafíos al manejar archivos PDF, ya sea leyendo, escribiendo, creando o convirtiendo entre formatos. Han surgido muchas bibliotecas para abordar estas necesidades, ofreciendo una integración fluida para las aplicaciones C#. Al desarrollar informes PDF en C# , seleccionar la biblioteca correcta afecta significativamente el tiempo de desarrollo y la calidad de salida. Para la generación completa de PDF en C# , es esencial comprender las capacidades de la biblioteca.
Este artículo compara dos bibliotecas PDF para desarrolladores .NET:
- IronPDF
- ExpertPDF
Ambas bibliotecas proporcionan métodos para generar, convertir y editar archivos PDF en entornos .NET. La consideración clave consiste en determinar qué biblioteca se adapta mejor a los requisitos específicos del proyecto. Este análisis destaca características esenciales para informar la toma de decisiones. Ya sea que se trate de implementar la conversión de HTML a PDF , capacidades de edición de PDF o funciones de organización de documentos , elegir la biblioteca adecuada resulta crucial.
¿Qué es la biblioteca IronPDF?
IronPDF proporciona una solución PDF .NET completa, especialmente beneficiosa para los desarrolladores de C#. La biblioteca permite la implementación de toda la funcionalidad PDF necesaria dentro de aplicaciones C#. Al ser compatible con la implementación de Azure y AWS Lambda , la biblioteca se adapta a las arquitecturas nativas de la nube. Los desarrolladores se benefician de un excelente soporte para Windows , implementación de Linux y compatibilidad con macOS . La descripción general de la instalación proporciona una guía de configuración completa.
IronPDF incorpora un motor .NET Chromium que convierte contenido HTML a PDF, simplificando el diseño de documentos sin necesidad de API complejas. El conversor de HTML a PDF crea documentos con HTML5, CSS, JavaScript e imágenes. Además, los desarrolladores pueden editar archivos PDF , agregar encabezados y pies de página y extraer imágenes . La biblioteca simplifica la lectura de texto a través de capacidades confiables de extracción de texto . Para entornos de producción, el motor de renderizado Chrome garantiza una representación precisa.
¿Cuáles son las principales características de IronPDF?
¿Cómo creo archivos PDF a partir de HTML?
- Crear archivos PDF a partir de HTML, CSS y JavaScript
- Generar documentos a partir de URLs de sitios web
- Cargar URL con credenciales y encabezados HTTP
- Admite CSS responsivo y tipos de medios
- Ejecución completa de JavaScript con retrasos de renderizado
¿Cómo puedo editar archivos PDF sin Adobe Acrobat Reader?
- Rellenar y leer formularios PDF
- Extraer texto e imágenes con análisis
- Estampar contenido HTML en páginas existentes
- Agregar encabezados/pies de página HTML o encabezados basados en texto
- Añadir anotaciones y firmas digitales
¿Cómo manipulo documentos PDF?
- Cargar y analizar desde flujos de memoria
- Fusionar y dividir el contenido del documento
- Agregar marcas de agua , fondos , texto y recursos
- Administrar páginas PDF con rotación de páginas
- Aplicar transformaciones y manipular objetos DOM
¿Qué formatos de archivos puedo convertir a PDF?
- Convertir formularios web ASPX con un código mínimo
- Convertir archivos HTML y archivos ZIP HTML
- Imágenes a PDF (PNG, JPG, GIF, TIFF)
- Markdown a PDF con soporte de formato
- DOCX a PDF y XML a PDF
¿Cómo guardo e imprimo archivos PDF?
- Guardar como datos binarios o MemoryStreams
- Tipos de medios CSS de impresión
- Convertir archivos PDF en objetos de documento de impresión
- Admite compatibilidad con PDF/A y accesibilidad a PDF/UA
- Exportar diferentes versiones de PDF y PDF linealizados
¿Qué es ExpertPDF?
Visite el sitio oficial de ExpertPDF para explorar su biblioteca .NET que ofrece conversión de HTML a PDF. La biblioteca permite la generación de informes PDF sin necesidad de un software de informes complejo. Para los desarrolladores que buscan documentación completa y referencia de API , consideren usar IronPDF en lugar de ExpertPDF para obtener una mayor disponibilidad de recursos.
ExpertPDF ofrece funciones sencillas de edición de PDF. El convertidor de HTML a PDF se integra rápidamente en aplicaciones .NET. Compatible con .NET Framework, .NET Core, .NET 5 y .NET 6, aunque carece de implementación en Linux y compatibilidad con macOS . Para implementaciones en contenedores, IronPDF ofrece soporte para Docker mientras que ExpertPDF no. IronPDF también admite la implementación de contenedores remotos y opciones de motor nativo frente a remoto .
Esta biblioteca crea archivos PDF a partir de URL de páginas web o marcado HTML sin formato en aplicaciones .NET. Para escenarios avanzados como la representación de sitios WebGL o aplicaciones con uso intensivo de JavaScript , IronPDF ofrece capacidades de representación superiores. La guía de inicio rápido ayuda a los desarrolladores a comenzar rápidamente.
¿Cuáles son las características clave de ExpertPDF?
Las características notables incluyen:
- Convertir páginas web URL a PDF
- Convertir cadenas HTML a PDF
- Múltiples opciones de archivo de salida
- Establecer márgenes y tamaño de página
- Establecer encabezados y pies de página
- Agregar saltos de página automáticos y personalizados
- Convertir partes específicas de una página web a PDF
- Ocultar elementos durante la conversión
- Fusionar varias páginas web en archivos PDF únicos
- Convertir páginas web autenticadas a PDF
- Seleccione el tipo de medio CSS para la representación
- Soporte para marcadores
- Soporte para firma digital
- Recuperar posiciones de elementos HTML en PDF
- Soporte para HTML5/CSS3
- Soporte para fuentes web
- Conversiones de Tipo de Archivo:
- Convertidor de PDF a Texto
- Convertidor de HTML a PDF
- Convertidor de HTML a Imagen
- Convertidor de PDF a Imagen
- Convertidor de RTF a PDF
Las siguientes secciones cubren:
- Crear un Proyecto de Consola
- Instalación de IronPDF
- Instalación de ExpertPDF
- Crear PDF desde una URL
- Crear PDF desde Cadena de Entrada HTML
- Fusionar varios archivos PDF en un solo PDF
- Convertir Imágenes a PDF
- Licencias y Precios
- Conclusión
¿Cómo creo un proyecto de consola?
Siga estos pasos para crear una aplicación de consola con Visual Studio 2022:
Abre Visual Studio 2022 y haz clic en crear un nuevo proyecto
Selecciona Aplicación de Consola C# y haz clic en siguiente
Ingrese el nombre del proyecto y haga clic en siguiente
Elija la versión de .NET Framework (utilizando la última versión 6.0)
El proyecto de consola está creado y listo para probar la biblioteca. Ambas bibliotecas requieren instalación antes de su uso. Consulte la guía de inicio rápido para obtener más detalles. La documentación general proporciona información completa.
¿Cómo se instala IronPDF?
Hay varios métodos de instalación disponibles:
- Usando Visual Studio
- Descargando el Paquete NuGet directamente
- Descargando la Librería IronPDF .DLL
Consulte la descripción general de la instalación para obtener más detalles. La biblioteca admite el instalador de Windows para la implementación en todo el sistema. Las opciones avanzadas incluyen la instalación de NuGet y el uso de claves de licencia .
¿Cómo realizar la instalación utilizando Visual Studio?
Visual Studio proporciona el Administrador de paquetes NuGet para instalar paquetes:
- Acceso a través de Herramientas del Menú del Proyecto, o
Haga clic derecho en el proyecto en el Explorador de soluciones
Busque el paquete NuGet IronPDF e instálelo. Consulte la guía de instalación de NuGet para obtener más detalles. Las guías específicas de la plataforma incluyen la integración de Android , el desarrollo de F# y el uso de VB.NET . Para solucionar problemas de implementación, consulte la guía sobre errores en la implementación del paquete NuGet .
¿Cómo descargo el paquete NuGet directamente?
Descargue IronPDF desde el sitio web de NuGet:
- Visita el paquete IronPDF de NuGet • Selecciona "Descargar Paquete"
- Haz doble clic en el paquete descargado
- El paquete se instala automáticamente
- Recargar Visual Studio
¿Cómo descargo e instalo la DLL de IronPDF?
Descargue el IronPDF .DLL directamente desde el sitio web de IronPDF . Haga clic en Descargar IronPDF DLL .
Referencia IronPDF en el proyecto:
- Haga clic derecho en Solución en el Explorador de soluciones • Selecciona "Agregar Referencia"
- Busque la biblioteca IronPDF.dll
- Haz clic en OK
La instalación de IronPDF ha finalizado. Para conocer opciones adicionales, incluida la implementación de Docker y la configuración del motor remoto , consulte la descripción general de la instalación . Para solucionar problemas, consulte la guía de solución rápida de problemas o explore el rendimiento de renderizado inicial y la optimización del proceso de GPU . La guía de carpetas de tiempo de ejecución ayuda con la gestión de dependencias.
¿Cómo instalo ExpertPDF?
Existen dos métodos de instalación:
- Uso del Administrador de paquetes NuGet de Visual Studio
- Descarga de ensamblados (versiones .NET anteriores)
Instale ExpertPDF utilizando el Administrador de paquetes NuGet para marcos .NET modernos. Considere utilizar IronPDF en lugar de ExpertPDF para obtener una mayor flexibilidad con métodos de instalación avanzados y optimización del tamaño del paquete .
¿Cómo realizo la instalación utilizando el Administrador de paquetes NuGet de Visual Studio?
Acceder al Administrador de paquetes NuGet:
• Menú Proyecto Herramientas
Haga clic derecho en el proyecto en el Explorador de soluciones
Busque el paquete NuGet de ExpertPDF e instálelo. Para mejorar la configuración, consulte la guía de declaración de uso de IronPDF .
Nota: ExpertPDF solo es compatible con Windows, mientras que IronPDF es compatible con Windows , Linux y macOS . Para implementaciones en la nube, IronPDF ofrece integración con Azure y compatibilidad con AWS Lambda . IronPDF proporciona una guía completa sobre optimización del rendimiento y gestión de memoria . Para plataformas específicas, consulte Compatibilidad de Red Hat Enterprise Linux y AWS Lambda en Amazon Linux 2 .
¿Cómo creo un PDF a partir de una URL?
Ambas bibliotecas convierten HTML a PDF. Consulte la guía de URL a PDF para obtener más detalles. Los sitios web complejos pueden requerir retrasos de renderizado personalizados o manejo de ejecución de JavaScript . Para sitios autenticados, consulte la Guía de inicio de sesión del sistema y del sitio web TLS . IronPDF se destaca por su conversión de HTML a PDF con resolución de píxeles perfecta mediante el renderizado de Chrome .
¿Cómo convierte IronPDF una URL a PDF?
IronPDF procesa HTML desde URL como PDF de manera eficiente. La biblioteca proporciona soporte de alto nivel para CSS , JavaScript , imágenes y formularios . El uso del motor de renderizado Chrome garantiza una conversión de HTML a PDF con píxeles perfectos . Para problemas de renderizado, consulte la guía de formato HTML de píxeles perfectos . Las opciones de renderizado avanzadas incluyen tamaños de papel personalizados y configuración de la ventana gráfica . El detector de mensajes de JavaScript permite el manejo dinámico de contenido.
Este ejemplo de código muestra cómo IronPDF permite a los desarrolladores crear archivos PDF a partir de URL de sitios web:
// Import the IronPdf library
using IronPdf;
// Initialize a new renderer
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render the specified URL as a PDF
var pdf = renderer.RenderUrlAsPdf("___PROTECTED_URL_190___");
// Save the rendered PDF to a file
pdf.SaveAs("url.pdf");// Import the IronPdf library
using IronPdf;
// Initialize a new renderer
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render the specified URL as a PDF
var pdf = renderer.RenderUrlAsPdf("___PROTECTED_URL_190___");
// Save the rendered PDF to a file
pdf.SaveAs("url.pdf");Para obtener URL autenticadas, consulte la guía de inicio de sesión del sistema y del sitio web TLS . Configure cookies y encabezados HTTP personalizados para solicitudes autenticadas. Los sitios seguros pueden requerir autenticación Kerberos . Para depurar, utilice la guía de depuración de Chrome . Ejemplos adicionales muestran la conversión de URL a PDF .
¿Cómo convierte ExpertPDF una URL a PDF?
ExpertPDF convierte URL mediante el método savePdfFromUrlToFile , conservando el formato de la página:
// Import the ExpertPdf.HtmlToPdf namespace
using ExpertPdf.HtmlToPdf;
// Initialize a new PdfConverter
PdfConverter pdfConverter = new PdfConverter();
// Use PdfConverter to save a webpage URL directly to a PDF file
pdfConverter.SavePdfFromUrlToFile("___PROTECTED_URL_191___", "output.pdf");// Import the ExpertPdf.HtmlToPdf namespace
using ExpertPdf.HtmlToPdf;
// Initialize a new PdfConverter
PdfConverter pdfConverter = new PdfConverter();
// Use PdfConverter to save a webpage URL directly to a PDF file
pdfConverter.SavePdfFromUrlToFile("___PROTECTED_URL_191___", "output.pdf");Detrás de escena, IronPDF utiliza su motor de renderizado Chrome para brindar un mejor soporte HTML5 y CSS3 .
¿Cómo creo un PDF a partir de una cadena de entrada HTML?
Ambas bibliotecas crean archivos PDF a partir de cadenas HTML. Consulte la guía de conversión de cadenas HTML a PDF para obtener más detalles. Utilice CSS para pantalla e impresión e incorpore fuentes web y fuentes de iconos . IronPDF ofrece un excelente soporte para Bootstrap y Flexbox CSS . El ejemplo de uso de HTML para crear un PDF demuestra una implementación práctica.
¿Cómo convierte IronPDF una cadena HTML a PDF?
Este ejemplo de código muestra cómo IronPDF permite a los desarrolladores generar documentos PDF a partir de cadenas HTML:
// Import the IronPdf library
using IronPdf;
// Initialize a new renderer
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render a PDF from HTML string and save it
var pdfDoc1 = renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>");
pdfDoc1.SaveAs("pixel-perfect.pdf");
// Render HTML with external assets and save it
var pdfDoc2 = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"C:\site\assets\");
pdfDoc2.SaveAs("html-with-assets.pdf");// Import the IronPdf library
using IronPdf;
// Initialize a new renderer
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render a PDF from HTML string and save it
var pdfDoc1 = renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>");
pdfDoc1.SaveAs("pixel-perfect.pdf");
// Render HTML with external assets and save it
var pdfDoc2 = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"C:\site\assets\");
pdfDoc2.SaveAs("html-with-assets.pdf");IronPDF admite URL base para rutas relativas y DataURI para incrustar imágenes. Para HTML complejo, consulte la guía de archivo HTML a PDF . Para ventanas gráficas específicas, consulte la guía de configuración de ventanas gráficas y zoom . La biblioteca admite idiomas internacionales y UTF-8 sin problemas. Las funciones avanzadas incluyen configuraciones de representación HTML y conversión de HTML a PDF responsiva .
¿Cómo convierte ExpertPDF una cadena HTML a PDF?
El convertidor de HTML a PDF de ExpertPDF admite la conversión de cadenas HTML:
// Import the ExpertPdf.HtmlToPdf namespace
using ExpertPdf.HtmlToPdf;
// Initialize a new PdfConverter
PdfConverter pdfConverter = new PdfConverter();
// Use PdfConverter to save an HTML string to a PDF file
pdfConverter.SavePdfFromHtmlStringToFile("<h1>PDF using Expert PDF</h1>", "html-to-pdf.pdf");// Import the ExpertPdf.HtmlToPdf namespace
using ExpertPdf.HtmlToPdf;
// Initialize a new PdfConverter
PdfConverter pdfConverter = new PdfConverter();
// Use PdfConverter to save an HTML string to a PDF file
pdfConverter.SavePdfFromHtmlStringToFile("<h1>PDF using Expert PDF</h1>", "html-to-pdf.pdf");El primer argumento especifica la cadena HTML, el segundo especifica el nombre del archivo de salida. Considere utilizar la compatibilidad con Unicode y UTF-8 de IronPDF en lugar de la representación HTML básica para obtener una compatibilidad de idiomas internacionales mucho mayor.
¿Cómo puedo generar archivos PDF de documentación técnica?
La documentación técnica se beneficia de diseños estructurados con ejemplos de código. Esta demostración de Bootstrap 5 muestra la capacidad de IronPDF para representar documentación con resaltado de sintaxis y alertas. Consulta la guía de soporte de CSS de Bootstrap y Flexbox para obtener más detalles. IronPDF admite la gestión de fuentes y el kerning de fuentes para tipografía profesional. Para mejorar los resultados, consulte la guía de solución de problemas de fuentes y la compatibilidad con idiomas internacionales .
using IronPdf;
var renderer = new ChromePdfRenderer();
string technicalDocs = @"
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<link href='___PROTECTED_URL_192___ rel='stylesheet'>
<style>
.code-block { background: #f8f9fa; border-left: 3px solid #0d6efd; padding: 15px; border-radius: 4px; }
.api-method { font-family: 'Courier New', monospace; color: #0d6efd; }
@media print { .card, .alert { page-break-inside: avoid; } }
</style>
</head>
<body class='bg-light'>
<div class='container py-4'>
<div class='card shadow-sm mb-4'>
<div class='card-header bg-dark text-white'>
<h2 class='mb-0'>API Reference - HTML to PDF Conversion</h2>
</div>
<div class='card-body'>
<h4>RenderHtmlAsPdf() Method</h4>
<p class='lead'>Converts HTML content to PDF with full CSS3 and JavaScript support.</p>
<div class='code-block mb-3'>
<code class='api-method'>PdfDocument RenderHtmlAsPdf(string htmlContent)</code>
</div>
<div class='row mt-4'>
<div class='col-md-6'>
<h5 class='text-primary'>Parameters</h5>
<table class='table table-sm table-bordered'>
<tr>
<td><code>htmlContent</code></td>
<td>String containing HTML to convert</td>
</tr>
</table>
</div>
<div class='col-md-6'>
<h5 class='text-success'>Returns</h5>
<table class='table table-sm table-bordered'>
<tr>
<td><code>PdfDocument</code></td>
<td>Generated PDF document object</td>
</tr>
</table>
</div>
</div>
</div>
</div>
<div class='row g-3 mb-4'>
<div class='col-md-4'>
<div class='alert alert-success mb-0'>
<h6 class='alert-heading'>✓ Supported Features</h6>
<ul class='mb-0 small'>
<li>HTML5 semantic tags</li>
<li>CSS3 with Flexbox/Grid</li>
<li>JavaScript execution</li>
<li>External stylesheets</li>
</ul>
</div>
</div>
<div class='col-md-4'>
<div class='alert alert-info mb-0'>
<h6 class='alert-heading'>ⓘ Rendering Engine</h6>
<ul class='mb-0 small'>
<li>Chrome V8 Engine</li>
<li>98% browser fidelity</li>
<li>Sub-second rendering</li>
<li>Async/await support</li>
</ul>
</div>
</div>
<div class='col-md-4'>
<div class='alert alert-warning mb-0'>
<h6 class='alert-heading'>⚠ ExpertPDF Notes</h6>
<ul class='mb-0 small'>
<li>Complex API structure</li>
<li>Limited CSS3 support</li>
<li>No native JavaScript</li>
<li>Requires configuration</li>
</ul>
</div>
</div>
</div>
<div class='card shadow-sm'>
<div class='card-header bg-primary text-white'>
<h5 class='mb-0'>Code Example Comparison</h5>
</div>
<div class='card-body'>
<div class='row'>
<div class='col-md-6'>
<h6 class='text-primary'>IronPDF (Simple)</h6>
<div class='code-block'>
<pre class='mb-0'><code>var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");</code></pre>
</div>
<div class='badge bg-success mt-2'>3 Lines</div>
</div>
<div class='col-md-6'>
<h6 class='text-warning'>ExpertPDF (Complex)</h6>
<div class='code-block'>
<pre class='mb-0'><code>var converter = new HtmlToPdfConverter();
converter.PdfDocumentOptions.PdfPageSize = PdfPageSize.A4;
converter.NavigationTimeout = 60;
byte[] result = converter.GetPdfBytesFromHtmlString(html);
File.WriteAllBytes("output.pdf", result);</code></pre>
</div>
<div class='badge bg-warning text-dark mt-2'>5+ Lines</div>
</div>
</div>
</div>
<div class='card-footer text-muted'>
<small><strong>Comparison:</strong> IronPDF provides a more intuitive API with less configuration overhead for common use cases.</small>
</div>
</div>
</div>
</body>
</html>";
var pdf = renderer.RenderHtmlAsPdf(technicalDocs);
pdf.SaveAs("technical-documentation.pdf");using IronPdf;
var renderer = new ChromePdfRenderer();
string technicalDocs = @"
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<link href='___PROTECTED_URL_192___ rel='stylesheet'>
<style>
.code-block { background: #f8f9fa; border-left: 3px solid #0d6efd; padding: 15px; border-radius: 4px; }
.api-method { font-family: 'Courier New', monospace; color: #0d6efd; }
@media print { .card, .alert { page-break-inside: avoid; } }
</style>
</head>
<body class='bg-light'>
<div class='container py-4'>
<div class='card shadow-sm mb-4'>
<div class='card-header bg-dark text-white'>
<h2 class='mb-0'>API Reference - HTML to PDF Conversion</h2>
</div>
<div class='card-body'>
<h4>RenderHtmlAsPdf() Method</h4>
<p class='lead'>Converts HTML content to PDF with full CSS3 and JavaScript support.</p>
<div class='code-block mb-3'>
<code class='api-method'>PdfDocument RenderHtmlAsPdf(string htmlContent)</code>
</div>
<div class='row mt-4'>
<div class='col-md-6'>
<h5 class='text-primary'>Parameters</h5>
<table class='table table-sm table-bordered'>
<tr>
<td><code>htmlContent</code></td>
<td>String containing HTML to convert</td>
</tr>
</table>
</div>
<div class='col-md-6'>
<h5 class='text-success'>Returns</h5>
<table class='table table-sm table-bordered'>
<tr>
<td><code>PdfDocument</code></td>
<td>Generated PDF document object</td>
</tr>
</table>
</div>
</div>
</div>
</div>
<div class='row g-3 mb-4'>
<div class='col-md-4'>
<div class='alert alert-success mb-0'>
<h6 class='alert-heading'>✓ Supported Features</h6>
<ul class='mb-0 small'>
<li>HTML5 semantic tags</li>
<li>CSS3 with Flexbox/Grid</li>
<li>JavaScript execution</li>
<li>External stylesheets</li>
</ul>
</div>
</div>
<div class='col-md-4'>
<div class='alert alert-info mb-0'>
<h6 class='alert-heading'>ⓘ Rendering Engine</h6>
<ul class='mb-0 small'>
<li>Chrome V8 Engine</li>
<li>98% browser fidelity</li>
<li>Sub-second rendering</li>
<li>Async/await support</li>
</ul>
</div>
</div>
<div class='col-md-4'>
<div class='alert alert-warning mb-0'>
<h6 class='alert-heading'>⚠ ExpertPDF Notes</h6>
<ul class='mb-0 small'>
<li>Complex API structure</li>
<li>Limited CSS3 support</li>
<li>No native JavaScript</li>
<li>Requires configuration</li>
</ul>
</div>
</div>
</div>
<div class='card shadow-sm'>
<div class='card-header bg-primary text-white'>
<h5 class='mb-0'>Code Example Comparison</h5>
</div>
<div class='card-body'>
<div class='row'>
<div class='col-md-6'>
<h6 class='text-primary'>IronPDF (Simple)</h6>
<div class='code-block'>
<pre class='mb-0'><code>var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");</code></pre>
</div>
<div class='badge bg-success mt-2'>3 Lines</div>
</div>
<div class='col-md-6'>
<h6 class='text-warning'>ExpertPDF (Complex)</h6>
<div class='code-block'>
<pre class='mb-0'><code>var converter = new HtmlToPdfConverter();
converter.PdfDocumentOptions.PdfPageSize = PdfPageSize.A4;
converter.NavigationTimeout = 60;
byte[] result = converter.GetPdfBytesFromHtmlString(html);
File.WriteAllBytes("output.pdf", result);</code></pre>
</div>
<div class='badge bg-warning text-dark mt-2'>5+ Lines</div>
</div>
</div>
</div>
<div class='card-footer text-muted'>
<small><strong>Comparison:</strong> IronPDF provides a more intuitive API with less configuration overhead for common use cases.</small>
</div>
</div>
</div>
</body>
</html>";
var pdf = renderer.RenderHtmlAsPdf(technicalDocs);
pdf.SaveAs("technical-documentation.pdf");Salida: Un PDF de documentación técnica profesional con tarjetas Bootstrap 5, alertas, tablas y bloques de código. IronPDF renderiza de manera precisa toda la tipografía, utilidades de espaciado y diseños de cuadrícula, demostrando capacidades superiores de generación de documentación.
¿Cómo puedo crear informes financieros con diseños complejos?
Los informes financieros requieren cálculos y formatos de tablas precisos. Este ejemplo demuestra la representación del diseño financiero complejo de IronPDF con CSS Grid y JavaScript dinámico. Consulta la guía de JavaScript en archivos PDF , incluida la ejecución de JavaScript personalizada, para obtener más detalles. Los documentos financieros pueden necesitar compresión PDF para la optimización de archivos y la gestión de metadatos para el cumplimiento. La guía de gráficos de representación en archivos PDF ayuda con la visualización de datos.
using IronPdf;
var renderer = new ChromePdfRenderer();
// Enable JavaScript for dynamic calculations
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.RenderDelay = 500; // Allow JS to execute
string financialReport = @"
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<style>
@page { size: A4; margin: 20mm; }
body { font-family: Arial, sans-serif; line-height: 1.6; }
.header { text-align: center; margin-bottom: 30px; }
.financial-grid { display: grid; grid-template-columns: 2fr 1fr 1fr; gap: 10px; margin-bottom: 20px; }
.grid-header { background: #2c3e50; color: white; padding: 10px; font-weight: bold; }
.grid-row { padding: 10px; border-bottom: 1px solid #ddd; }
.grid-row:hover { background: #f9f9f9; }
.amount { text-align: right; font-family: 'Courier New', monospace; }
.positive { color: #27ae60; }
.negative { color: #e74c3c; }
.total-row { background: #ecf0f1; font-weight: bold; margin-top: 10px; }
.footer-note { font-size: 0.8em; color: #666; margin-top: 30px; text-align: center; }
@media print {
.grid-row:hover { background: transparent; }
.financial-grid { page-break-inside: avoid; }
}
</style>
</head>
<body>
<div class='header'>
<h1>Quarterly Financial Report</h1>
<p>Q4 2023 - Consolidated Statement</p>
</div>
<div class='financial-grid'>
<div class='grid-header'>Revenue Stream</div>
<div class='grid-header amount'>Q3 2023</div>
<div class='grid-header amount'>Q4 2023</div>
<div class='grid-row'>Software Licenses</div>
<div class='grid-row amount'>$2,150,000</div>
<div class='grid-row amount positive'>$2,875,000</div>
<div class='grid-row'>Support Services</div>
<div class='grid-row amount'>$850,000</div>
<div class='grid-row amount positive'>$975,000</div>
<div class='grid-row'>Consulting</div>
<div class='grid-row amount'>$425,000</div>
<div class='grid-row amount negative'>$380,000</div>
<div class='grid-row total-row'>Total Revenue</div>
<div class='grid-row total-row amount'>$3,425,000</div>
<div class='grid-row total-row amount positive' id='total'>$4,230,000</div>
</div>
<div class='financial-grid'>
<div class='grid-header'>Operating Expenses</div>
<div class='grid-header amount'>Q3 2023</div>
<div class='grid-header amount'>Q4 2023</div>
<div class='grid-row'>R&D</div>
<div class='grid-row amount'>$1,200,000</div>
<div class='grid-row amount'>$1,350,000</div>
<div class='grid-row'>Sales & Marketing</div>
<div class='grid-row amount'>$800,000</div>
<div class='grid-row amount'>$950,000</div>
<div class='grid-row'>General & Admin</div>
<div class='grid-row amount'>$400,000</div>
<div class='grid-row amount'>$425,000</div>
<div class='grid-row total-row'>Total Expenses</div>
<div class='grid-row total-row amount'>$2,400,000</div>
<div class='grid-row total-row amount'>$2,725,000</div>
</div>
<script>
// Calculate growth percentage
const q3Total = 3425000;
const q4Total = 4230000;
const growth = ((q4Total - q3Total) / q3Total * 100).toFixed(1);
// Add growth indicator
const totalEl = document.getElementById('total');
totalEl.innerHTML += ` <small>(+${growth}%)</small>`;
</script>
<div class='footer-note'>
<p>This report was generated using IronPDF's advanced rendering engine.<br>
All financial figures are in USD. Report generated on: <span id='date'></span></p>
</div>
<script>
document.getElementById('date').textContent = new Date().toLocaleDateString();
</script>
</body>
</html>";
var pdf = renderer.RenderHtmlAsPdf(financialReport);
pdf.SaveAs("financial-report.pdf");using IronPdf;
var renderer = new ChromePdfRenderer();
// Enable JavaScript for dynamic calculations
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.RenderDelay = 500; // Allow JS to execute
string financialReport = @"
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<style>
@page { size: A4; margin: 20mm; }
body { font-family: Arial, sans-serif; line-height: 1.6; }
.header { text-align: center; margin-bottom: 30px; }
.financial-grid { display: grid; grid-template-columns: 2fr 1fr 1fr; gap: 10px; margin-bottom: 20px; }
.grid-header { background: #2c3e50; color: white; padding: 10px; font-weight: bold; }
.grid-row { padding: 10px; border-bottom: 1px solid #ddd; }
.grid-row:hover { background: #f9f9f9; }
.amount { text-align: right; font-family: 'Courier New', monospace; }
.positive { color: #27ae60; }
.negative { color: #e74c3c; }
.total-row { background: #ecf0f1; font-weight: bold; margin-top: 10px; }
.footer-note { font-size: 0.8em; color: #666; margin-top: 30px; text-align: center; }
@media print {
.grid-row:hover { background: transparent; }
.financial-grid { page-break-inside: avoid; }
}
</style>
</head>
<body>
<div class='header'>
<h1>Quarterly Financial Report</h1>
<p>Q4 2023 - Consolidated Statement</p>
</div>
<div class='financial-grid'>
<div class='grid-header'>Revenue Stream</div>
<div class='grid-header amount'>Q3 2023</div>
<div class='grid-header amount'>Q4 2023</div>
<div class='grid-row'>Software Licenses</div>
<div class='grid-row amount'>$2,150,000</div>
<div class='grid-row amount positive'>$2,875,000</div>
<div class='grid-row'>Support Services</div>
<div class='grid-row amount'>$850,000</div>
<div class='grid-row amount positive'>$975,000</div>
<div class='grid-row'>Consulting</div>
<div class='grid-row amount'>$425,000</div>
<div class='grid-row amount negative'>$380,000</div>
<div class='grid-row total-row'>Total Revenue</div>
<div class='grid-row total-row amount'>$3,425,000</div>
<div class='grid-row total-row amount positive' id='total'>$4,230,000</div>
</div>
<div class='financial-grid'>
<div class='grid-header'>Operating Expenses</div>
<div class='grid-header amount'>Q3 2023</div>
<div class='grid-header amount'>Q4 2023</div>
<div class='grid-row'>R&D</div>
<div class='grid-row amount'>$1,200,000</div>
<div class='grid-row amount'>$1,350,000</div>
<div class='grid-row'>Sales & Marketing</div>
<div class='grid-row amount'>$800,000</div>
<div class='grid-row amount'>$950,000</div>
<div class='grid-row'>General & Admin</div>
<div class='grid-row amount'>$400,000</div>
<div class='grid-row amount'>$425,000</div>
<div class='grid-row total-row'>Total Expenses</div>
<div class='grid-row total-row amount'>$2,400,000</div>
<div class='grid-row total-row amount'>$2,725,000</div>
</div>
<script>
// Calculate growth percentage
const q3Total = 3425000;
const q4Total = 4230000;
const growth = ((q4Total - q3Total) / q3Total * 100).toFixed(1);
// Add growth indicator
const totalEl = document.getElementById('total');
totalEl.innerHTML += ` <small>(+${growth}%)</small>`;
</script>
<div class='footer-note'>
<p>This report was generated using IronPDF's advanced rendering engine.<br>
All financial figures are in USD. Report generated on: <span id='date'></span></p>
</div>
<script>
document.getElementById('date').textContent = new Date().toLocaleDateString();
</script>
</body>
</html>";
var pdf = renderer.RenderHtmlAsPdf(financialReport);
pdf.SaveAs("financial-report.pdf");Este ejemplo de código muestra cómo IronPDF permite a los desarrolladores utilizar diseños de cuadrícula CSS , ejecución de JavaScript y CSS específico de impresión . Agregue encabezados y pies de página personalizados a los informes, implemente fondos y primeros planos para la marca, marcas de agua para seguridad y firmas digitales para autenticación. Consulte la guía de generación de informes PDF para obtener más detalles.
¿Cómo fusiono varios archivos PDF en un solo PDF?
Ambas bibliotecas fusionan múltiples archivos PDF en un solo documento, consolidando los datos para una transmisión eficiente. Consulte la guía de fusión o división de PDF para obtener más detalles. Los documentos de varias páginas pueden requerir la administración de páginas o la división de archivos PDF de varias páginas . Para un rendimiento de archivos grandes, considere la generación de PDF asincrónica o el procesamiento paralelo . El ejemplo de fusión de dos o más archivos PDF proporciona una implementación práctica. Para organizar archivos PDF , IronPDF ofrece herramientas completas.
¿Cómo fusiona IronPDF archivos PDF?
Este ejemplo de código muestra cómo IronPDF permite a los desarrolladores renderizar dos PDF a partir de cadenas HTML y fusionarlos. El enfoque sencillo ofrece opciones de configuración adicionales. Para conocer los números de página y los saltos de página en documentos fusionados, consulte las guías respectivas. También copie páginas entre archivos PDF para un control granular. Para formularios, consulte la documentación de gestión de formularios y edición de formularios . El ejemplo de números de página y saltos de página muestra una implementación combinada.
// Import the IronPdf library
using IronPdf;
// Define HTML strings to convert to PDF
var htmlA = @"<p> [PDF_A] </p>
<p> [PDF_A] 1st Page </p>
<div style='page-break-after: always;'></div>
<p> [PDF_A] 2nd Page</p>";
var htmlB = @"<p> [PDF_B] </p>
<p> [PDF_B] 1st Page </p>
<div style='page-break-after: always;'></div>
<p> [PDF_B] 2nd Page</p>";
// Initialize a new renderer
var renderer = new ChromePdfRenderer();
// Render HTML strings as PDFs
var pdfDocA = renderer.RenderHtmlAsPdf(htmlA);
var pdfDocB = renderer.RenderHtmlAsPdf(htmlB);
// Merge the PDF documents
var mergedPdf = PdfDocument.Merge(pdfDocA, pdfDocB);
// Save the merged PDF
mergedPdf.SaveAs("Merged.pdf");// Import the IronPdf library
using IronPdf;
// Define HTML strings to convert to PDF
var htmlA = @"<p> [PDF_A] </p>
<p> [PDF_A] 1st Page </p>
<div style='page-break-after: always;'></div>
<p> [PDF_A] 2nd Page</p>";
var htmlB = @"<p> [PDF_B] </p>
<p> [PDF_B] 1st Page </p>
<div style='page-break-after: always;'></div>
<p> [PDF_B] 2nd Page</p>";
// Initialize a new renderer
var renderer = new ChromePdfRenderer();
// Render HTML strings as PDFs
var pdfDocA = renderer.RenderHtmlAsPdf(htmlA);
var pdfDocB = renderer.RenderHtmlAsPdf(htmlB);
// Merge the PDF documents
var mergedPdf = PdfDocument.Merge(pdfDocA, pdfDocB);
// Save the merged PDF
mergedPdf.SaveAs("Merged.pdf");El método Merge acepta múltiples documentos como objetos enumerables. Consulte el ejemplo de código de IronPDF para fusionar archivos PDF . Para agregar portadas o crear tablas de contenido , consulte guías especializadas. También sellar nuevo contenido o agregar archivos adjuntos . El ejemplo de dividir un PDF y extraer páginas demuestra operaciones inversas.
Tenga en cuenta que los PDF fusionados que contienen formularios editables tienen nombres de campos de formulario con números de índice adjuntos. Consulte la guía de manejo de datos del formulario para obtener más detalles.
¿Cómo ExpertPDF fusiona archivos PDF?
ExpertPDF utiliza un componente Merge PDF que requiere una instalación independiente. El método AppendPDFFile agrega archivos a los objetos PDFMerge:
// Import the ExpertPdf.MergePdf namespace
using ExpertPdf.MergePdf;
// Initialize a new PDFMerge object
PDFMerge pdfMerge = new PDFMerge();
// Append PDF files to the merge object
pdfMerge.AppendPDFFile("output.pdf");
pdfMerge.AppendPDFFile("html-to-pdf.pdf");
// Save the merged PDF to a file
pdfMerge.SaveMergedPDFToFile("merged.pdf");// Import the ExpertPdf.MergePdf namespace
using ExpertPdf.MergePdf;
// Initialize a new PDFMerge object
PDFMerge pdfMerge = new PDFMerge();
// Append PDF files to the merge object
pdfMerge.AppendPDFFile("output.pdf");
pdfMerge.AppendPDFFile("html-to-pdf.pdf");
// Save the merged PDF to a file
pdfMerge.SaveMergedPDFToFile("merged.pdf");Detrás de escena, IronPDF utiliza algoritmos de fusión más eficientes. Considere utilizar la generación de PDF asincrónica y la generación multiproceso de IronPDF en lugar de operaciones sincrónicas para obtener un rendimiento mucho mayor.
¿Cómo puedo implementar la fusión avanzada de PDF con la organización de documentos?
Las aplicaciones empresariales requieren funciones avanzadas como marcadores, organización de páginas y conservación de metadatos al fusionar archivos PDF. Este ejemplo demuestra la gestión de marcadores , el manejo de metadatos y la organización de documentos. Para cumplir con los requisitos, implemente el historial de revisiones , la conversión de PDF/A y la accesibilidad de PDF/UA . El ejemplo de esquemas y marcadores proporciona detalles de implementación adicionales. Consulta la guía de configuración y edición de metadatos y la solución de problemas de visibilidad de metadatos para obtener más detalles.
using IronPdf;
using System.Collections.Generic;
using System.Linq;
public class AdvancedPdfMerger
{
public static void MergeDocumentsWithBookmarks()
{
var renderer = new ChromePdfRenderer();
var documentsToMerge = new List<PdfDocument>();
// Create chapter PDFs with proper structure
string[] chapters = { "Introduction", "Technical Overview", "Implementation", "Conclusion" };
foreach (var chapter in chapters)
{
string html = $@"
<html>
<head>
<style>
body {{ font-family: Georgia, serif; margin: 40px; }}
h1 {{ color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 10px; }}
.chapter-number {{ color: #7f8c8d; font-size: 0.8em; }}
</style>
</head>
<body>
<h1><span class='chapter-number'>Chapter {Array.IndexOf(chapters, chapter) + 1}</span><br>{chapter}</h1>
<p>This is the content for the {chapter} chapter. In a real document, this would contain
extensive content, diagrams, and detailed explanations.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua.</p>
</body>
</html>";
var pdf = renderer.RenderHtmlAsPdf(html);
// Add metadata to each chapter
pdf.MetaData.Title = $"Chapter: {chapter}";
pdf.MetaData.Author = "Technical Documentation Team";
pdf.MetaData.Subject = "Enterprise PDF Generation";
documentsToMerge.Add(pdf);
}
// Create a table of contents
string tocHtml = @"
<html>
<head>
<style>
body { font-family: Georgia, serif; margin: 40px; }
h1 { text-align: center; color: #2c3e50; margin-bottom: 40px; }
.toc-entry { margin: 15px 0; font-size: 1.1em; }
.toc-entry a { text-decoration: none; color: #3498db; }
.page-number { float: right; color: #7f8c8d; }
</style>
</head>
<body>
<h1>Table of Contents</h1>";
int pageNumber = 2; // Starting after TOC page
foreach (var chapter in chapters)
{
tocHtml += $@"
<div class='toc-entry'>
<a href='#'>Chapter {Array.IndexOf(chapters, chapter) + 1}: {chapter}</a>
<span class='page-number'>{pageNumber}</span>
</div>";
pageNumber += 2; // Assuming each chapter is 2 pages
}
tocHtml += @"
</body>
</html>";
var tocPdf = renderer.RenderHtmlAsPdf(tocHtml);
// Merge all documents with TOC first
var allDocuments = new List<PdfDocument> { tocPdf };
allDocuments.AddRange(documentsToMerge);
var finalPdf = PdfDocument.Merge(allDocuments);
// Add bookmarks for navigation
finalPdf.BookMarks.AddBookMarkAtStart("Table of Contents", 0);
int currentPage = 1; // After TOC
foreach (var chapter in chapters)
{
finalPdf.BookMarks.AddBookMarkAtStart($"Chapter {Array.IndexOf(chapters, chapter) + 1}: {chapter}", currentPage);
currentPage += 2;
}
// Set document properties
finalPdf.MetaData.Title = "Complete Technical Documentation";
finalPdf.MetaData.Keywords = "IronPDF, Documentation, Enterprise, .NET";
finalPdf.MetaData.CreationDate = System.DateTime.Now;
// Add page numbers to footer
finalPdf.AddTextFooters("Page {page} of {total-pages}",
new ChromePdfRenderer.ChromePdfRenderOptions()
{
MarginBottom = 20,
MarginLeft = 50,
MarginRight = 50
});
finalPdf.SaveAs("advanced-merged-document.pdf");
}
}using IronPdf;
using System.Collections.Generic;
using System.Linq;
public class AdvancedPdfMerger
{
public static void MergeDocumentsWithBookmarks()
{
var renderer = new ChromePdfRenderer();
var documentsToMerge = new List<PdfDocument>();
// Create chapter PDFs with proper structure
string[] chapters = { "Introduction", "Technical Overview", "Implementation", "Conclusion" };
foreach (var chapter in chapters)
{
string html = $@"
<html>
<head>
<style>
body {{ font-family: Georgia, serif; margin: 40px; }}
h1 {{ color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 10px; }}
.chapter-number {{ color: #7f8c8d; font-size: 0.8em; }}
</style>
</head>
<body>
<h1><span class='chapter-number'>Chapter {Array.IndexOf(chapters, chapter) + 1}</span><br>{chapter}</h1>
<p>This is the content for the {chapter} chapter. In a real document, this would contain
extensive content, diagrams, and detailed explanations.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua.</p>
</body>
</html>";
var pdf = renderer.RenderHtmlAsPdf(html);
// Add metadata to each chapter
pdf.MetaData.Title = $"Chapter: {chapter}";
pdf.MetaData.Author = "Technical Documentation Team";
pdf.MetaData.Subject = "Enterprise PDF Generation";
documentsToMerge.Add(pdf);
}
// Create a table of contents
string tocHtml = @"
<html>
<head>
<style>
body { font-family: Georgia, serif; margin: 40px; }
h1 { text-align: center; color: #2c3e50; margin-bottom: 40px; }
.toc-entry { margin: 15px 0; font-size: 1.1em; }
.toc-entry a { text-decoration: none; color: #3498db; }
.page-number { float: right; color: #7f8c8d; }
</style>
</head>
<body>
<h1>Table of Contents</h1>";
int pageNumber = 2; // Starting after TOC page
foreach (var chapter in chapters)
{
tocHtml += $@"
<div class='toc-entry'>
<a href='#'>Chapter {Array.IndexOf(chapters, chapter) + 1}: {chapter}</a>
<span class='page-number'>{pageNumber}</span>
</div>";
pageNumber += 2; // Assuming each chapter is 2 pages
}
tocHtml += @"
</body>
</html>";
var tocPdf = renderer.RenderHtmlAsPdf(tocHtml);
// Merge all documents with TOC first
var allDocuments = new List<PdfDocument> { tocPdf };
allDocuments.AddRange(documentsToMerge);
var finalPdf = PdfDocument.Merge(allDocuments);
// Add bookmarks for navigation
finalPdf.BookMarks.AddBookMarkAtStart("Table of Contents", 0);
int currentPage = 1; // After TOC
foreach (var chapter in chapters)
{
finalPdf.BookMarks.AddBookMarkAtStart($"Chapter {Array.IndexOf(chapters, chapter) + 1}: {chapter}", currentPage);
currentPage += 2;
}
// Set document properties
finalPdf.MetaData.Title = "Complete Technical Documentation";
finalPdf.MetaData.Keywords = "IronPDF, Documentation, Enterprise, .NET";
finalPdf.MetaData.CreationDate = System.DateTime.Now;
// Add page numbers to footer
finalPdf.AddTextFooters("Page {page} of {total-pages}",
new ChromePdfRenderer.ChromePdfRenderOptions()
{
MarginBottom = 20,
MarginLeft = 50,
MarginRight = 50
});
finalPdf.SaveAs("advanced-merged-document.pdf");
}
}Esta implementación avanzada demuestra la gestión de marcadores , el manejo de metadatos y la numeración de páginas . Consulte el tutorial sobre cómo organizar archivos PDF para obtener más detalles. Explore las técnicas de compresión de PDF después de la fusión. Por seguridad, implemente protección con contraseña y encriptación . El ejemplo de cómo agregar encabezados y pies de página de texto clásicos proporciona opciones de formato. Para obtener funciones adicionales, explore cómo agregar números de página y agregar una tabla de contenido como guía. El ejemplo de contraseñas, seguridad y metadatos muestra una implementación integrada.
¿Cómo convierto imágenes a PDF?
IronPDF convierte varias imágenes a PDF, una función no disponible en ExpertPDF. Sin embargo, ExpertPDF extrae imágenes de archivos PDF y convierte archivos PDF en imágenes, capacidades que IronPDF también ofrece. Consulte la guía de imágenes en PDF para obtener más detalles. IronPDF admite la rasterización de archivos PDF a imágenes y la extracción de texto e imágenes . Para escenarios avanzados, dibuje texto y mapas de bits o dibuje líneas y rectángulos . El ejemplo de conversión de imágenes a PDF demuestra una implementación práctica. Para conocer la calidad de la imagen, consulte el ejemplo de PDF a imagen de C# sin perder calidad .
¿Cómo IronPDF convierte imágenes a PDF?
La creación de archivos PDF a partir de imágenes utiliza la clase ImageToPdfConverter . Las imágenes se cargan desde cualquier carpeta y admiten varios formatos, incluidos archivos TIFF de varias páginas . También agregue imágenes a archivos PDF existentes o trabaje con gráficos SVG . Para una mayor eficiencia de la memoria, utilice la función rasterizar imágenes usando MemoryStream . El ejemplo de tamaño de PDF personalizado ayuda con el control del diseño.
// Import the IronPdf namespace
using IronPdf;
// Specify the folder containing the image files
var imageFiles = System.IO.Directory.EnumerateFiles(@"C:\project\assets")
.Where(file => file.EndsWith(".jpg") || file.EndsWith(".jpeg"));
// Convert the images to a PDF document
var pdfDocument = ImageToPdfConverter.ImageToPdf(imageFiles);
// Save the PDF document
pdfDocument.SaveAs(@"C:\project\composite.pdf");// Import the IronPdf namespace
using IronPdf;
// Specify the folder containing the image files
var imageFiles = System.IO.Directory.EnumerateFiles(@"C:\project\assets")
.Where(file => file.EndsWith(".jpg") || file.EndsWith(".jpeg"));
// Convert the images to a PDF document
var pdfDocument = ImageToPdfConverter.ImageToPdf(imageFiles);
// Save the PDF document
pdfDocument.SaveAs(@"C:\project\composite.pdf");Además de convertir imágenes a PDF, IronPDF convierte documentos escaneados y documentos comerciales en imágenes mediante rasterización de imágenes . La biblioteca también extrae imágenes de varios tipos de archivos. Consulta la guía de rasterización de imágenes con MemoryStream para obtener información sobre operaciones de memoria. Para imágenes grandes, considere la optimización del tamaño de archivo ImageToPDF . El ejemplo de orientación vertical y horizontal facilita la configuración de la página. Para un manejo avanzado de imágenes, consulte el ejemplo de incrustación de mapas de bits e imágenes .
¿Cómo puedo crear conversiones avanzadas de imágenes a PDF con control de diseño?
Para una colocación controlada de imágenes y diseños profesionales, este ejemplo de álbum de fotos demuestra cómo incrustar imágenes y crear diseños. Para el almacenamiento en la nube, consulte la guía de imágenes de Azure Blob Storage . El ejemplo en escala de grises muestra las opciones de procesamiento de imágenes:
using IronPdf;
using System.IO;
public class PhotoAlbumCreator
{
public static void CreatePhotoAlbum(string imagesFolder, string outputPath)
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;
string htmlContent = @"
<!DOCTYPE html>
<html>
<head>
<style>
body { font-family: Arial, sans-serif; }
.album-title { text-align: center; font-size: 2em; margin-bottom: 30px; color: #2c3e50; }
.photo-container { margin-bottom: 30px; text-align: center; page-break-inside: avoid; }
.photo { max-width: 100%; max-height: 500px; box-shadow: 0 4px 6px rgba(0,0,0,0.1); }
.caption { margin-top: 10px; font-style: italic; color: #666; }
.page-break { page-break-after: always; }
</style>
</head>
<body>
<h1 class='album-title'>My Photo Album</h1>";
var imageFiles = Directory.GetFiles(imagesFolder, "*.*")
.Where(file => new[] { ".jpg", ".jpeg", ".png", ".gif" }
.Contains(Path.GetExtension(file).ToLower()))
.ToList();
for (int i = 0; i < imageFiles.Count; i++)
{
string base64Image = Convert.ToBase64String(File.ReadAllBytes(imageFiles[i]));
string fileName = Path.GetFileNameWithoutExtension(imageFiles[i]);
htmlContent += $@"
<div class='photo-container'>
<img class='photo' src='data:image/jpeg;base64,{base64Image}' alt='{fileName}'>
<div class='caption'>Photo {i + 1}: {fileName}</div>
</div>";
// Add page break every 2 photos
if ((i + 1) % 2 == 0 && i < imageFiles.Count - 1)
{
htmlContent += "<div class='page-break'></div>";
}
}
htmlContent += @"
<div style='text-align: center; margin-top: 40px; color: #999;'>
<small>Created with IronPDF - Total Photos: " + imageFiles.Count + @"</small>
</div>
</body>
</html>";
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs(outputPath);
}
}
// Usage
PhotoAlbumCreator.CreatePhotoAlbum(@"C:\MyPhotos", @"C:\MyPhotoAlbum.pdf");using IronPdf;
using System.IO;
public class PhotoAlbumCreator
{
public static void CreatePhotoAlbum(string imagesFolder, string outputPath)
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;
string htmlContent = @"
<!DOCTYPE html>
<html>
<head>
<style>
body { font-family: Arial, sans-serif; }
.album-title { text-align: center; font-size: 2em; margin-bottom: 30px; color: #2c3e50; }
.photo-container { margin-bottom: 30px; text-align: center; page-break-inside: avoid; }
.photo { max-width: 100%; max-height: 500px; box-shadow: 0 4px 6px rgba(0,0,0,0.1); }
.caption { margin-top: 10px; font-style: italic; color: #666; }
.page-break { page-break-after: always; }
</style>
</head>
<body>
<h1 class='album-title'>My Photo Album</h1>";
var imageFiles = Directory.GetFiles(imagesFolder, "*.*")
.Where(file => new[] { ".jpg", ".jpeg", ".png", ".gif" }
.Contains(Path.GetExtension(file).ToLower()))
.ToList();
for (int i = 0; i < imageFiles.Count; i++)
{
string base64Image = Convert.ToBase64String(File.ReadAllBytes(imageFiles[i]));
string fileName = Path.GetFileNameWithoutExtension(imageFiles[i]);
htmlContent += $@"
<div class='photo-container'>
<img class='photo' src='data:image/jpeg;base64,{base64Image}' alt='{fileName}'>
<div class='caption'>Photo {i + 1}: {fileName}</div>
</div>";
// Add page break every 2 photos
if ((i + 1) % 2 == 0 && i < imageFiles.Count - 1)
{
htmlContent += "<div class='page-break'></div>";
}
}
htmlContent += @"
<div style='text-align: center; margin-top: 40px; color: #999;'>
<small>Created with IronPDF - Total Photos: " + imageFiles.Count + @"</small>
</div>
</body>
</html>";
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs(outputPath);
}
}
// Usage
PhotoAlbumCreator.CreatePhotoAlbum(@"C:\MyPhotos", @"C:\MyPhotoAlbum.pdf");Este ejemplo de código muestra cómo IronPDF permite a los desarrolladores implementar la incrustación de imágenes con DataURI , administrar saltos de página y crear diseños profesionales. Para obtener imágenes en la nube, consulte la guía de imágenes de Azure Blob Storage . Para archivos grandes, considere la optimización del tamaño de archivo ImageToPDF . También escale objetos PDF y traduzca objetos PDF para un posicionamiento preciso. El ejemplo de exportación de archivos PDF a la memoria ayuda a lograr flujos de trabajo que hacen un uso eficiente de la memoria. Consulte la guía para agregar contenido HTML de manera eficiente para el procesamiento por lotes.
¿Cuáles son las opciones de licencia y precios?
IronPDF es una biblioteca PDF comercial de C# disponible en el sitio web de IronPDF. Gratuita para desarrollo privado, con licencia para uso comercial. Hay varias licencias disponibles para proyectos individuales, desarrolladores, agencias y corporaciones. Admite redistribución de SaaS y OEM. Consulte la guía de claves de licencia para obtener detalles de implementación. Al realizar la implementación, aplique la clave de licencia correctamente. Para aplicaciones web, configure las claves de licencia en Web.config . Para problemas de conexión con el servidor de licencias , consulte la guía de solución de problemas. La guía de uso de claves de licencia proporciona detalles completos de la implementación.
Todas las licencias incluyen garantía de devolución de dinero de 30 días, soporte de un año y actualizaciones del producto. Las licencias perpetuas requieren una compra única sin cargos adicionales. El paquete Lite para un solo desarrollador/proyecto comienza desde $799 . Para obtener soporte más allá del primer año, consulte extensiones de licencia . Para actualizar funciones adicionales o implementar, consulte las actualizaciones de licencias . Para la implementación de IronPDF e IIS o para agregar IronPDF a los instaladores de software , consulte las guías especializadas. La guía de incompatibilidad de versiones de ClickOnce ayuda con los problemas de implementación.
ExpertPDF ofrece licencias por desarrollador o por empresa. Pruebe ExpertPDF gratis . Consulte las características de la licencia a continuación. Considere utilizar las opciones de licencia transparentes de IronPDF en lugar de ExpertPDF para obtener un valor mucho mayor y un soporte completo.
La licencia completa para desarrolladores del kit de herramientas ExpertComponents comienza desde $850, y la del kit de herramientas ExpertPDF desde $750. Los componentes individuales se pueden comprar por separado. Ver precios completos de ExpertPDF . Para los requisitos empresariales, la licencia de IronPDF ofrece un mejor valor con conjuntos de funciones completos.
¿Qué biblioteca PDF debería elegir?
IronPDF convierte HTML a PDF localmente sin conexión a Internet, simulando navegadores web compatibles con estándares. La representación HTML produce una salida precisa en formato vectorial adecuada para la impresión comercial. Con licencia para uso comercial con precios transparentes. Para implementaciones empresariales, IronPDF ofrece soporte para Docker y capacidades de motor remoto . Consulta las guías sobre cómo ejecutar IronPDF como contenedor remoto y las opciones de motor nativo vs. remoto . La biblioteca proporciona IronPDF.Slim para un tamaño de implementación reducido y admite la optimización del tamaño del paquete . La guía de excepciones de implementación de IronPdf.Slim v2025.5.6 ayuda con problemas de versiones específicas.
La biblioteca de conversión de HTML a PDF de ExpertPDF convierte páginas web y HTML a PDF, genera informes desde ASP.NET y firma contratos electrónicamente. De uso gratuito con funciones adicionales con licencia. A diferencia del soporte completo de plataformas de IronPDF, incluida la implementación en Android , ExpertPDF se limita a las plataformas Windows. Detrás de escena, IronPDF utiliza funciones de seguridad avanzadas y actualizaciones periódicas del producto . La descripción general de los hitos muestra una mejora continua, incluido el hito de representación de Chrome , el hito de compatibilidad y el hito de estabilidad y rendimiento .
Si bien ambas bibliotecas manejan archivos PDF y convierten formatos populares, IronPDF ofrece ventajas sobre ExpertPDF. IronPDF convierte desde una gama más amplia de formatos, incluidos XML , imágenes, AngularJS , Markdown y RTF , con funciones confiables de generación, formato y edición de PDF. Esto garantiza que los desarrolladores logren eficiencia para el desarrollo pragmático. La biblioteca se destaca en la mejora del rendimiento con soporte asincrónico para escenarios de alto rendimiento. Para el procesamiento simultáneo, IronPDF admite la generación de PDF en paralelo y la generación multiproceso . Consulta la guía de solución de problemas de renderizado lento inicial para obtener detalles de optimización.
ExpertPDF requiere la instalación de componentes separados, mientras que IronPDF integra todas las funciones. Esto es especialmente útil cuando los proyectos requieren funciones PDF completas. Los paquetes IronPDF ofrecen licencias de por vida sin costos continuos, mientras que ExpertPDF requiere renovaciones. Además, IronPDF proporciona documentación completa, referencia de API y ejemplos de código para inicios rápidos. La sección de demostraciones muestra implementaciones reales. Para solucionar problemas, consulte la guía de solución rápida de problemas o explore el rendimiento de renderizado inicial y la optimización del proceso de GPU . La guía para obtener el mejor soporte garantiza una resolución eficiente de problemas.
Para implementaciones de producción, IronPDF ofrece capacidades de depuración superiores, registro personalizado y extensas guías de solución de problemas . La biblioteca admite funciones avanzadas: conformidad con PDF/A , accesibilidad PDF/UA , firmas digitales con HSM y desinfección para un manejo seguro. Para la seguridad empresarial, IronPDF ofrece cifrado y descifrado , protección con contraseña y funciones de seguridad completas. Las funciones avanzadas incluyen la redacción de texto , la nivelación de archivos PDF y la gestión de versiones PDF . La guía de conversión de PDF a base64 ayuda con la transmisión de datos.
En cuanto a soporte y desarrollo, IronPDF ofrece soporte de ingeniería con guías detalladas para realizar solicitudes de soporte . Las actualizaciones y los hitos de los productos de la biblioteca demuestran una mejora continua. Para los desarrolladores de .NET MAUI, IronPDF ofrece capacidades de visualización de PDF y conversión de XAML a PDF . Los desarrolladores de Blazor utilizan la integración de Blazor Server y la conversión de Razor a PDF . La biblioteca admite la conversión de CSHTML a PDF para aplicaciones MVC y la representación de CSHTML sin interfaz gráfica . Consulte la guía de Blazor Server / WebAssembly para conocer las limitaciones.
Para usos especializados, IronPDF se destaca por su integración con OpenAI para procesamiento inteligente , representación de gráficos en archivos PDF , conversión de CSHTML a PDF en aplicaciones MVC y compatibilidad con idiomas internacionales y UTF-8 . La biblioteca maneja escenarios complejos: aplanamiento de PDF , linealización para visualización web rápida y creación de formularios PDF . Explore la transformación de páginas PDF , la eliminación de objetos PDF y la configuración de rutas temporales personalizadas . La descripción completa de las funciones de IronPDF muestra capacidades para crear archivos PDF , convertir archivos PDF , editar archivos PDF , organizar archivos PDF y proteger archivos PDF . Las características adicionales incluyen leer archivos PDF en C# , buscar y reemplazar texto y eliminar páginas PDF específicas .
Para conocer las consideraciones de implementación, consulte depuración de Azure Functions en la máquina local , administración de archivos de registro de Azure , manejo de archivos de registro de AWS y soluciones para errores de puerta de enlace incorrecta 502 . IronPDF proporciona un manejo completo de errores que incluye soluciones de acceso a rutas denegadas , implementación de dependencias de Chrome , implementación de dependencias de PDFium y soluciones de errores de asignación incorrecta . El soporte específico de la plataforma incluye guías específicas de Linux , excepciones nativas de macOS y limitaciones de Windows Nano Server . Las características de seguridad incluyen el estado de vulnerabilidad de Log4j y protección contra fallas de segmentación en AWS Lambda .
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.
¿Cuáles son las principales diferencias entre IronPDF y ExpertPDF?
IronPDF ofrece un soporte más amplio de formatos y funcionalidad integrada, incluyendo la creación de PDF desde HTML, edición y conversión de formatos. ExpertPDF proporciona una conversión sencilla de HTML a PDF con opciones para configuraciones de archivo de salida y firmas digitales.
¿Puedo extraer texto e imágenes de un PDF usando estas bibliotecas?
Sí, IronPDF te permite extraer texto e imágenes de documentos PDF, facilitando la manipulación y el análisis del contenido PDF dentro de las aplicaciones .NET.
¿Qué opciones de instalación están disponibles para estas bibliotecas PDF?
Tanto IronPDF como ExpertPDF pueden instalarse usando el Gestor de Paquetes NuGet de Visual Studio. Además, la biblioteca .DLL de IronPDF puede descargarse directamente desde el sitio web de IronPDF.
¿Es posible combinar múltiples archivos PDF en un solo documento?
Sí, IronPDF proporciona un método Merge para combinar múltiples PDF en un documento. ExpertPDF también ofrece un componente PDFMerge para fusionar PDFs.
¿Requiere IronPDF una conexión a internet para la conversión de HTML a PDF?
No, IronPDF no requiere una conexión a internet para la conversión de HTML a PDF, lo que lo convierte en una opción confiable para aplicaciones offline.
¿Cuáles son las opciones de licencia disponibles para IronPDF?
IronPDF ofrece varias opciones de licencia, incluyendo proyecto individual, desarrollador, agencia y licencias corporativas. Todas las licencias son perpetuas e incluyen una garantía de devolución de dinero de 30 días y un año de soporte y actualizaciones.
¿Puede ExpertPDF manejar firmas digitales para documentos PDF?
Sí, ExpertPDF soporta la firma digital de documentos PDF, permitiendo archivos PDF seguros y autenticados.
¿Qué desafíos enfrentan los desarrolladores C# al trabajar con PDFs, y cómo ayudan estas bibliotecas?
Los desarrolladores C# a menudo enfrentan desafíos al leer, escribir, crear y convertir PDFs. Bibliotecas como IronPDF y ExpertPDF simplifican estas tareas proporcionando herramientas poderosas para la conversión de HTML a PDF, edición de PDF y más, facilitando la integración fácil en aplicaciones C#.






