Saltar al pie de página
COMPARACIONES DE PRODUCTOS

iTextSharp HTML a PDF el "Documento no tiene páginas" Error resuelto con IronPDF

La conversión de HTML a PDF es un requisito común en las aplicaciones .NET, pero los desarrolladores que utilizan iTextSharp a menudo se encuentran con el frustrante error de iTextSharp HTML a PDF "el documento no tiene páginas". Este error aparece cuando falla el proceso de generación de documentos PDF, dejando a los desarrolladores buscando una solución. Exploremos por qué ocurre esto y cómo resolverlo eficazmente con las funciones de HTML a PDF de IronPDF.

¿Qué causa el error "El documento no tiene páginas"?

La excepción "el documento no tiene páginas" se produce cuando el analizador sintáctico de iTextSharp no puede procesar el contenido HTML en un documento PDF válido. Este mismo error suele aparecer durante la operación de cierre del documento, como se detalla en muchos hilos de Stack Overflow sobre este problema:

static void Main(string[] args)
{
    Document pdfDoc = new Document(PageSize.A4);
    FileStream stream = new FileStream("output.pdf", FileMode.Create);
    PdfWriter writer = PdfWriter.GetInstance(pdfDoc, stream);
    pdfDoc.Open();
    // HTML parsing fails silently
    var sr = new StringReader("<div>Complex HTML</div>");
    XMLWorkerHelper.GetInstance().ParseXHtml(writer, pdfDoc, sr);
    pdfDoc.Close(); // Exception: The document has no pages
    Console.WriteLine("Error: Document has no pages");
}
static void Main(string[] args)
{
    Document pdfDoc = new Document(PageSize.A4);
    FileStream stream = new FileStream("output.pdf", FileMode.Create);
    PdfWriter writer = PdfWriter.GetInstance(pdfDoc, stream);
    pdfDoc.Open();
    // HTML parsing fails silently
    var sr = new StringReader("<div>Complex HTML</div>");
    XMLWorkerHelper.GetInstance().ParseXHtml(writer, pdfDoc, sr);
    pdfDoc.Close(); // Exception: The document has no pages
    Console.WriteLine("Error: Document has no pages");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Salida de consola

Consola mostrando mensaje de error

Este código intenta crear un archivo PDF pero se encuentra con la excepción de que XMLWorker no ha podido analizar correctamente el contenido HTML. La operación de escritura se completa, pero no se añade contenido al documento pdfdoc, lo que da como resultado un archivo vacío. Este fallo de análisis es uno de los problemas más comunes a los que se enfrentan los desarrolladores cuando trabajan con la conversión de HTML a PDF en aplicaciones ASP.NET que se ejecutan en un servidor.

¿Por qué XMLWorker se enfrenta al mismo problema en documentos nuevos?

Aunque XMLWorker sustituyó al obsoleto HTMLWorker, sigue encontrando el mismo problema con ciertas estructuras HTML. El problema persiste porque XMLWorker tiene estrictos requisitos de análisis sintáctico, como se documenta en los foros oficiales de iText:

public static void CreatePDF(string html, string path)
{
    using (var fs = new FileStream(path, FileMode.Create))
    {
        var document = new Document();
        var writer = PdfWriter.GetInstance(document, fs);
        document.Open();
        document.Add(new Paragraph("")); // Workaround to avoid error
        // Add phrase for testing
        var phrase = new Phrase("Draft version", FontFactory.GetFont("Arial", 8));
        document.Add(phrase);
        using (var sr = new StringReader(html))
        {
            XMLWorkerHelper.GetInstance().ParseXHtml(writer, document, sr);
        }
        document.Close();
    }
}
public static void CreatePDF(string html, string path)
{
    using (var fs = new FileStream(path, FileMode.Create))
    {
        var document = new Document();
        var writer = PdfWriter.GetInstance(document, fs);
        document.Open();
        document.Add(new Paragraph("")); // Workaround to avoid error
        // Add phrase for testing
        var phrase = new Phrase("Draft version", FontFactory.GetFont("Arial", 8));
        document.Add(phrase);
        using (var sr = new StringReader(html))
        {
            XMLWorkerHelper.GetInstance().ParseXHtml(writer, document, sr);
        }
        document.Close();
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Resultado PDF

PDF creado con XMLWorker

Añadir un nuevo párrafo vacío evita el error inmediato, pero el HTML complejo con elementos de tabla, imágenes o fuentes personalizadas a menudo no se muestra correctamente. El contenido puede faltar o estar mal formado en el PDF resultante. Los desarrolladores suelen encontrarse con el mismo problema al procesar HTML con estilos incrustados, elementos de hipervínculo o propiedades de anchura específicas. Las referencias nulas y la representación de elementos ausentes crean problemas adicionales que requieren aclaración.

¿Cómo se puede convertir HTML moderno sin que se produzca el mismo error?

Examinemos un caso real: la conversión de una factura con estilo de HTML a PDF. Este ejemplo muestra la diferencia entre ambos enfoques. La siguiente muestra incluye elementos comunes que suelen causar problemas:

<!-- Invoice HTML with modern styling -->
<!DOCTYPE html>
<html>
<head>
    <title>Invoice Sample</title>
    <meta name="description" content="Invoice template for testing">
</head>
<body>
    <div style="font-family: Arial; width: 100%;">
        <h1 style="color: #2e6c80;">Invoice #12345</h1>
        <p>Date: <span id="date">2025-01-15</span></p>
        <table style="width: 100%; border-collapse: collapse;">
            <tr>
                <td style="border: 1px solid #ddd; padding: 8px;">Item</td>
                <td style="border: 1px solid #ddd; padding: 8px;">Price</td>
            </tr>
            <tr>
                <td style="border: 1px solid #ddd; padding: 8px;">Service</td>
                <td style="border: 1px solid #ddd; padding: 8px;">$100.00</td>
            </tr>
        </table>
        <a href="http://example.com">View Terms</a>
    </div>
</body>
</html>
<!-- Invoice HTML with modern styling -->
<!DOCTYPE html>
<html>
<head>
    <title>Invoice Sample</title>
    <meta name="description" content="Invoice template for testing">
</head>
<body>
    <div style="font-family: Arial; width: 100%;">
        <h1 style="color: #2e6c80;">Invoice #12345</h1>
        <p>Date: <span id="date">2025-01-15</span></p>
        <table style="width: 100%; border-collapse: collapse;">
            <tr>
                <td style="border: 1px solid #ddd; padding: 8px;">Item</td>
                <td style="border: 1px solid #ddd; padding: 8px;">Price</td>
            </tr>
            <tr>
                <td style="border: 1px solid #ddd; padding: 8px;">Service</td>
                <td style="border: 1px solid #ddd; padding: 8px;">$100.00</td>
            </tr>
        </table>
        <a href="http://example.com">View Terms</a>
    </div>
</body>
</html>
HTML

Resultado de iTextSharp

resultado de factura de iTextSharp

Resultado de IronPDF

Facturas renderizadas en IronPDF

Con XMLWorker de iTextSharp, esta factura podría fallar debido al estilo de la tabla, las propiedades de anchura o las especificaciones de la fuente. El documento no tiene páginas de error a menudo aparece cuando estos elementos no son compatibles. Es posible que los hipervínculos y otras referencias tampoco se muestren correctamente.

Al trabajar con la generación de PDF del lado del servidor, los desarrolladores necesitan un método fiable que pueda gestionar archivos adjuntos, establecer cabeceras de disposición de contenido adecuadas para la descarga y procesar datos de formularios web. Los detalles importan a la hora de crear archivos listos para producción. En muchos foros de desarrolladores se debaten estas cuestiones, y los desarrolladores publican casos de prueba que muestran el mismo problema en distintos escenarios.

¿Cómo manejaIronPDFla conversión de documentos HTML a PDF?

IronPDF utiliza un motor de renderizado basado en Chrome que procesa HTML exactamente como aparece en un navegador web. Este enfoque elimina los errores de análisis sintáctico y es compatible con todas las funciones HTML/CSS modernas. Más información sobre convertir archivos HTML en PDF o explorar la ChromePdfRenderer API:

using IronPdf;
static void Main(string[] args)
{
    var renderer = new ChromePdfRenderer();
    // Same HTML that failed with iTextSharp
    string HTML = @"<div style='font-family: Arial; width: 100%;'>
        <h1 style='color: #2e6c80;'>Invoice #12345</h1>
        <table style='width: 100%; border-collapse: collapse;'>
            <tr>
                <td style='border: 1px solid #ddd; padding: 8px;'>Item</td>
                <td style='border: 1px solid #ddd; padding: 8px;'>Price</td>
            </tr>
        </table>
    </div>";
    var PDF = renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs("invoice.pdf");
}
using IronPdf;
static void Main(string[] args)
{
    var renderer = new ChromePdfRenderer();
    // Same HTML that failed with iTextSharp
    string HTML = @"<div style='font-family: Arial; width: 100%;'>
        <h1 style='color: #2e6c80;'>Invoice #12345</h1>
        <table style='width: 100%; border-collapse: collapse;'>
            <tr>
                <td style='border: 1px solid #ddd; padding: 8px;'>Item</td>
                <td style='border: 1px solid #ddd; padding: 8px;'>Price</td>
            </tr>
        </table>
    </div>";
    var PDF = renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs("invoice.pdf");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Resultado PDF

Salir archivo PDF con IronPDF

Este código crea correctamente el archivo PDF sin ninguna excepción. El método maneja HTML y CSS complejos de forma automática, eliminando la necesidad de recurrir a métodos alternativos. El contenido debe reproducirse perfectamente, como en la vista previa del navegador.

¿Cuál es la mejor solución para generar PDF fiables?

Al comparar las dos bibliotecas para la conversión de HTML a PDF, tenga en cuenta estas diferencias clave:

Característica iTextSharp con XMLWorker IronPDF
Soporte HTML/CSS moderno Limitado Completo
Ejecución de JavaScript No
Tratamiento de errores Parse excepciones comunes Interpretación fiable
Tablas complejas A menudo falla Soporte completo
Fuentes personalizadas Requiere incrustación de fuentes Gestión automática
Curva de aprendizaje Encaramado API simple

Para los desarrolladores que experimentan el error "el documento no tiene páginas", la migración aIronPDFofrece una solución inmediata. El proceso de conversión es sencillo:

// Before (iTextSharp)
var document = new Document();
PdfWriter.GetInstance(document, stream);
// Complex parsing code...
// After (IronPDF)
var PDF = new ChromePdfRenderer().RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("output.pdf");
// Before (iTextSharp)
var document = new Document();
PdfWriter.GetInstance(document, stream);
// Complex parsing code...
// After (IronPDF)
var PDF = new ChromePdfRenderer().RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("output.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

La API simplificada significa menos código que mantener y ningún error de análisis que depurar. Esta respuesta al problema ha sido muy apreciada por los desarrolladores que necesitan una generación de PDF fiable.

NuGet Instalar con NuGet

PM >  Install-Package IronPdf

Echa un vistazo a IronPDF en NuGet para una instalación rápida. Con más de 10 millones de descargas, está transformando el desarrollo de PDF con C#. También puede descargar el DLL o el instalador de Windows.

Inicie su prueba gratuita para experimentar la conversión de HTML a PDF sin errores.

Conclusión

El error "el documento no tiene páginas" se debe a limitaciones fundamentales de análisis sintáctico que persisten incluso con XMLWorker. Aunque existen soluciones alternativas, no resuelven el problema subyacente con el procesamiento de HTML complejo. El renderizado basado en Chrome de IronPDF proporciona una solución fiable que gestiona el contenido web moderno sin excepciones de análisis sintáctico.

Para las aplicaciones de producción que requieren una generación de PDF coherente a partir de HTML,IronPDFelimina la frustración de depurar los errores del analizador y ofrece resultados profesionales. El sistema gestiona todos los elementos HTML, estilos CSS e incluso JavaScript, garantizando que sus documentos se visualicen correctamente en todo momento. Tanto si está creando facturas, informes o cualquier documento con texto, tablas e imágenes,IronPDFproporciona la respuesta que los desarrolladores han estado buscando.

Por favor notaiTextSharp y XMLWorker son marcas registradas de sus respectivos propietarios. Este sitio no está afiliado, respaldado ni patrocinado por iTextSharp o XMLWorker. Todos los nombres de producto, logotipos y marcas son propiedad de sus respectivos dueños. Las comparaciones son sólo para fines informativos y reflejan información disponible públicamente al momento de escribir.

Preguntas Frecuentes

¿Qué causa el error de iTextSharp HTML a PDF 'el documento no tiene páginas'?

El error "el documento no tiene páginas" en iTextSharp se produce cuando falla el proceso de análisis sintáctico durante la conversión de HTML a PDF, a menudo debido a problemas con el contenido HTML o a funciones no compatibles.

¿Existe alguna alternativa a iTextSharp para la conversión de HTML a PDF?

Sí, IronPDF ofrece una solución fiable para la conversión de HTML a PDF en aplicaciones .NET, superando muchas limitaciones encontradas en iTextSharp.

¿En qué se diferencia IronPDF de iTextSharp en la conversión de HTML a PDF?

IronPDF ofrece capacidades de análisis más sólidas y es compatible con una gama más amplia de funciones HTML y CSS, lo que reduce la probabilidad de errores de conversión como el error "no pages".

¿Puede IronPDF convertir documentos HTML complejos a PDF?

IronPDF está diseñado para manejar documentos HTML complejos, incluidos aquellos con CSS avanzado, JavaScript y elementos multimedia, garantizando un resultado PDF preciso.

¿Por qué los desarrolladores deberían considerar el uso de IronPDF en lugar de iTextSharp?

Es posible que los desarrolladores prefieran IronPDF a iTextSharp por su facilidad de uso, su amplia compatibilidad con HTML y CSS y su capacidad para producir PDF de alta calidad sin errores comunes.

¿Es IronPDF compatible con JavaScript y CSS durante el proceso de conversión de PDF?

Sí, IronPDF es totalmente compatible con JavaScript, CSS y HTML5 moderno, lo que garantiza que la integridad visual del HTML original se mantenga en el resultado PDF.

¿Cómo puedo empezar a utilizar IronPDF para la conversión de HTML a PDF?

Para empezar a utilizar IronPDF, puede explorar sus tutoriales detallados y la documentación disponible en su sitio web, que proporciona guías paso a paso para la implementación.

¿Cuáles son los beneficios de usar IronPDF para desarrolladores .NET?

IronPDF ofrece a los desarrolladores .NET una herramienta sólida y flexible para la generación de PDF, con ventajas como la compatibilidad con contenidos HTML complejos, la facilidad de integración y un rendimiento fiable.

¿Ofrece IronPDF algún tipo de soporte para solucionar errores de conversión de PDF?

Sí, IronPDF proporciona amplios recursos de asistencia, incluida documentación y un equipo de asistencia, para ayudar a solucionar cualquier problema que surja durante la conversión de PDF.

¿Hay alguna forma de probar las capacidades de IronPDF antes de comprarlo?

IronPDF ofrece una versión de prueba gratuita que permite a los desarrolladores probar sus funciones y evaluar su rendimiento antes de tomar una decisión de compra.

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más