IRONSOFTWAREHOME
VIDEOS

Cómo convertir HTML a PDF con C# en .NET 10 | IronPDF

Curtis Chau
Curtis Chau
Updated: 19 de julio de 2026

ZetPDF es una biblioteca PDF con licencia comercial para aplicaciones C# creada sobre la base de la biblioteca PDFSharp de código abierto ampliamente utilizada. Aunque ZetPDFofrece soporte comercial y capacidades básicas de manipulación de PDF, hereda importantes limitaciones de su base PDFSharp. En particular, la biblioteca se basa en la programación de gráficos por coordenadas y ofrece capacidades limitadas de conversión de HTML a PDF en comparación con las alternativas modernas.

Esta guía proporciona una ruta de migración completa de ZetPDFa IronPDF, con instrucciones paso a paso, comparaciones de código y ejemplos prácticos para desarrolladores .NET profesionales que estén evaluando esta transición.

Por qué migrar de ZetPDF

ZetPDF, como bifurcación de PDFSharp, hereda las mismas restricciones arquitectónicas que limitan su eficacia para los flujos de trabajo modernos de generación de documentos. Entre las principales razones por las que los equipos de desarrollo se plantean la migración se incluyen:

API basada en coordenadas: ZetPDFobliga a los desarrolladores a posicionar cada elemento con coordenadas exactas. La compleja colocación manual de cada elemento plantea problemas de mantenimiento a medida que cambian los requisitos.

Compatibilidad limitada con CSS: la falta de un sistema de estilo implica una gestión manual de fuentes y colores para cada elemento.

Sin representación de JavaScript : no se puede representar contenido web dinámico ni ejecutar JavaScript durante la generación de PDF.

Ofertas únicas limitadas: en comparación con el uso directo de PDFSharp sin costo, ZetPDFofrece pocas razones convincentes que requieran su licencia comercial.

Saltos de página manuales: se debe calcular y gestionar el desbordamiento de página manualmente en lugar de depender de la paginación automática.

Se requiere medición de texto: el cálculo manual para el ajuste de texto crea una sobrecarga de desarrollo adicional.

El problema fundamental

ZetPDF y PDFSharp obligan a posicionar cada elemento con coordenadas exactas:

// ZetPDF: Manual positioning nightmare
graphics.DrawString("Name:", font, brush, new XPoint(50, 100));
graphics.DrawString("John Doe", font, brush, new XPoint(100, 100));
graphics.DrawString("Address:", font, brush, new XPoint(50, 120));
graphics.DrawString("123 Main St", font, brush, new XPoint(100, 120));
// ... hundreds of lines for a simple form

IronPDF utiliza HTML/CSS: el motor de diseño se encarga de todo:

// IronPDF: Simple HTML
var html = @"
<p><strong>Name:</strong> John Doe</p>
<p><strong>Address:</strong> 123 Main St</p>";
var pdf = renderer.RenderHtmlAsPdf(html);

IronPDF frente a ZetPDF: Comparación de características

Comprender las diferencias arquitectónicas ayuda a los responsables técnicos a evaluar la inversión en migración:

CaracterísticaZetPDFIronPDF
Basado en PDFSharpNo
Conversión de HTML a PDFLimitadoSí (Chromium completo)
Licencia comercialSí, Perpetual
Fundación Código AbiertoPDFSharp (Licencia MIT)Basado en Chromium
Soporte CSSNoCSS3 completo
JavaScriptNoES2024 completo
Diseño automáticoNo
Saltos de página automáticosNo
TablasDibujo manualHTML <table>
Cabeceras/Pies de páginaManualHTML/CSS
Marcas de aguaCódigo del manualIncorporado en
Fusionar PDFLimitado
Dividir PDFLimitado
Firmas digitalesNo
PDF/ANo
Simplicidad y facilidad de usoModeradoAlta

Inicio rápido: Migración de ZetPDFa IronPDF

La migración puede comenzar inmediatamente con estos pasos básicos.

Paso 1: Sustituir el paquete NuGet

Eliminar ZetPDF e instalar IronPDF:

# Remove ZetPDF
dotnet remove package ZetPDF

# Install IronPDF
dotnet add package IronPdf
SHELL

Paso 2: Actualizar los espacios de nombres

Sustituya los espacios de nombres ZetPDFpor el espacio de nombres IronPdf:

// Before (ZetPDF)
using ZetPDF;
using ZetPDF.Drawing;
using ZetPDF.Fonts;

// After (IronPDF)
using IronPdf;

Paso 3: Inicializar licencia

Añadir inicialización de licencia al inicio de la aplicación:

IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

Ejemplos de migración de código

Convertir HTML a PDF

La operación de HTML a PDF demuestra las diferencias de API entre estas bibliotecas PDF .NET.

Enfoque ZetPDF:

// NuGet: Install-Package ZetPDF
using ZetPDF;
using System;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var htmlContent = "<html><body><h1>Hello World</h1></body></html>";
        converter.ConvertHtmlToPdf(htmlContent, "output.pdf");
        Console.WriteLine("PDF created successfully");
    }
}

Enfoque IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var htmlContent = "<html><body><h1>Hello World</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("output.pdf");
        Console.WriteLine("PDF created successfully");
    }
}

ZetPDF utiliza HtmlToPdfConverter con ConvertHtmlToPdf() que escribe directamente en una ruta de archivo.IronPDF proporciona ChromePdfRenderer con RenderHtmlAsPdf() que devuelve un objeto PdfDocument, lo que le brinda más flexibilidad con la salida: puede guardar en un archivo, obtener datos binarios o realizar operaciones adicionales antes de guardar.

Para situaciones avanzadas de conversión de HTML a PDF, consulte la Guía de conversión de HTML a PDF.

Convertir URL en PDF

La conversión de URL a PDF muestra claramente las diferencias de patrón.

Enfoque ZetPDF:

// NuGet: Install-Package ZetPDF
using ZetPDF;
using System;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var url = "https://www.example.com";
        converter.ConvertUrlToPdf(url, "webpage.pdf");
        Console.WriteLine("PDF from URL created successfully");
    }
}

Enfoque IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var url = "https://www.example.com";
        var pdf = renderer.RenderUrlAsPdf(url);
        pdf.SaveAs("webpage.pdf");
        Console.WriteLine("PDF from URL created successfully");
    }
}

ZetPDF utiliza la misma clase HtmlToPdfConverter con ConvertUrlToPdf().IronPDF proporciona RenderUrlAsPdf() en ChromePdfRenderer, que aprovecha un motor de renderizado Chromium completo para una captura precisa de páginas web, incluida la ejecución de JavaScript y CSS moderno.

Explore la URL a la documentación PDF para conocer las opciones de autenticación y encabezado personalizado.

Fusión de varios PDF

La fusión de PDF revela importantes diferencias de API en el tratamiento de los documentos.

Enfoque ZetPDF:

// NuGet: Install-Package ZetPDF
using ZetPDF;
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var merger = new PdfMerger();
        var files = new List<string> { "document1.pdf", "document2.pdf" };
        merger.MergeFiles(files, "merged.pdf");
        Console.WriteLine("PDFs merged successfully");
    }
}

Enfoque IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var pdfs = new List<PdfDocument>
        {
            PdfDocument.FromFile("document1.pdf"),
            PdfDocument.FromFile("document2.pdf")
        };
        var merged = PdfDocument.Merge(pdfs);
        merged.SaveAs("merged.pdf");
        Console.WriteLine("PDFs merged successfully");
    }
}

ZetPDF utiliza una clase dedicada PdfMerger que opera en rutas de archivos con MergeFiles().IronPDF carga documentos como objetos PdfDocument usando PdfDocument.FromFile() y luego los fusiona con el método estático PdfDocument.Merge(). Este enfoque orientado a objetos permite realizar operaciones adicionales en el documento fusionado antes de guardarlo.

Explore la documentación sobre la fusión de PDF para conocer otras opciones de fusión.

Dibujo por coordenadas frente a HTML

Para los desarrolladores con código ZetPDFexistente que utilice gráficos basados en coordenadas, la ruta de migración implica convertir los comandos de dibujo a HTML/CSS.

Enfoque basado en coordenadas de ZetPDF:

using ZetPDF;
using ZetPDF.Drawing;

var document = new PdfDocument();
var page = document.AddPage();
page.Width = XUnit.FromMillimeter(210);
page.Height = XUnit.FromMillimeter(297);

var graphics = XGraphics.FromPdfPage(page);
var titleFont = new XFont("Arial", 24, XFontStyle.Bold);
var bodyFont = new XFont("Arial", 12);

graphics.DrawString("Company Report", titleFont, XBrushes.Navy,
    new XPoint(50, 50));
graphics.DrawString("This is the introduction paragraph.", bodyFont, XBrushes.Black,
    new XPoint(50, 80));
graphics.DrawString("Generated: " + DateTime.Now.ToString(), bodyFont, XBrushes.Gray,
    new XPoint(50, 100));

document.Save("report.pdf");

Enfoque HTML de IronPDF:

using IronPdf;

var html = $@"
<html>
<head>
    <style>
        body {{ font-family: Arial, sans-serif; padding: 50px; }}
        h1 {{ color: navy; }}
        .date {{ color: gray; }}
    </style>
</head>
<body>
    <h1>Company Report</h1>
    <p>This is the introduction paragraph.</p>
    <p class='date'>Generated: {DateTime.Now}</p>
</body>
</html>";

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("report.pdf");

El enfoque de ZetPDFrequiere crear objetos de fuente, calcular las posiciones exactas de los píxeles y gestionar manualmente el contexto gráfico. El enfoque de IronPDF utiliza HTML y CSS estándar que los desarrolladores web ya conocen: las fuentes, los colores y el diseño se gestionan mediante propiedades CSS familiares.

Referencia de la API de ZetPDFa IronPDF

Este mapeo acelera la migración al mostrar los equivalentes directos de las API:

ZetPDFIronPDF
new PdfDocument()new ChromePdfRenderer()
document.AddPage()Automático
XGraphics.FromPdfPage(page)N/A
graphics.DrawString()Elementos de texto HTML
graphics.DrawImage()Etiqueta <img>
graphics.DrawLine()Bordes CSS
graphics.DrawRectangle()CSS border + div
new XFont()CSS font-family
XBrushes.BlackCSS color
document.Save()pdf.SaveAs()
PdfReader.Open()PdfDocument.FromFile()
HtmlToPdfConverterChromePdfRenderer
ConvertHtmlToPdf()RenderHtmlAsPdf()
ConvertUrlToPdf()RenderUrlAsPdf()
PdfMergerPdfDocument.Merge()

Problemas comunes de migración y soluciones

Número 1: Diseño basado en coordenadas

ZetPDF: Todo requiere coordenadas X,Y exactas con posicionamiento manual.

Solución: Utilizar diseño de flujo HTML/CSS. Para el posicionamiento absoluto cuando sea necesario, utilice CSS:

.positioned-element {
    position: absolute;
    top: 100px;
    left: 50px;
}
Text

Número 2: Gestión de objetos de fuentes

ZetPDF: Crea objetos XFont para cada variación de fuente.

Solución: Utilizar CSS font-family-las fuentes se manejan automáticamente:

<style>
    body { font-family: Arial, sans-serif; }
    h1 { font-family: 'Times New Roman', serif; font-size: 24px; font-weight: bold; }
</style>
HTML

Número 3: Manejo del color

ZetPDF: Utilice XBrushes y objetos de color.

Solución: Utilizar colores CSS estándar:

.header { color: navy; background-color: #f5f5f5; }
.warning { color: rgb(255, 0, 0); }
Text

Edición 4: Saltos de página manuales

ZetPDF: Rastrea la posición Y y crea nuevas páginas manualmente cuando el contenido se desborda.

**Solución:**IronPDF gestiona los saltos de página automáticos. Para un control explícito, utilice CSS:

.section { page-break-after: always; }
.keep-together { page-break-inside: avoid; }
Text

Edición 5: Creación de tablas

ZetPDF: Requiere el dibujo manual de rectángulos, líneas y posicionamiento de texto.

Solución: Utilizar tablas HTML estándar con estilo CSS:

<table style="border-collapse: collapse; width: 100%;">
    <tr>
        <th style="border: 1px solid black; padding: 8px;">Header</th>
    </tr>
    <tr>
        <td style="border: 1px solid black; padding: 8px;">Data</td>
    </tr>
</table>
HTML

Lista de comprobación para la migración a ZetPDF

Tareas previas a la migración

Audite su código base para identificar todo el uso de ZetPDF:

grep -r "using ZetPDF" --include="*.cs" .
grep -r "HtmlToPdfConverter\|PdfMerger\|XGraphics" --include="*.cs" .
SHELL

Documentar código de dibujo basado en coordenadas que necesite conversión a HTML. Tenga en cuenta los patrones de uso de fuentes y colores. Asignar estructuras de diseño a equivalentes HTML.

Tareas de actualización de código

  1. Eliminar el paquete NuGet de ZetPDF
  2. Instalación del paquete IronPdf NuGet
  3. Actualizar las importaciones de espacios de nombres de ZetPDF a IronPdf
  4. Reemplace HtmlToPdfConverter con ChromePdfRenderer
  5. Convierte las llamadas ConvertHtmlToPdf() a RenderHtmlAsPdf() + SaveAs()
  6. Convierte las llamadas ConvertUrlToPdf() a RenderUrlAsPdf() + SaveAs()
  7. Reemplace PdfMerger.MergeFiles() con PdfDocument.Merge()
  8. Convertir las llamadas DrawString() en elementos de texto HTML
  9. Convertir XFont a CSS font-family
  10. Reemplace XBrushes con colores CSS
  11. Añadir la inicialización de la licencia IronPDF al inicio

Pruebas posteriores a la migración

Tras la migración, verifique estos aspectos:

  • Comparar los resultados visuales para garantizar que el aspecto coincida o mejore
  • Verificar que las fuentes se muestran como se espera con el estilo CSS
  • Prueba de que los saltos de página se producen correctamente con la paginación automática
  • Comprobar que las imágenes están colocadas y se muestran correctamente
  • Prueba de que las operaciones de fusión de PDF producen resultados correctos
  • Confirmar que toda la funcionalidad existente funciona con la nueva implementación

Beneficios clave de migrar a IronPDF

El cambio de ZetPDFa IronPDF ofrece varias ventajas fundamentales:

**Motor de renderizado Chromium moderno:**IronPDF utiliza Chromium para la conversión de HTML a PDF, lo que garantiza compatibilidad total con CSS3 y JavaScript ES2024. Los frameworks modernos y los diseños responsivos se traducen correctamente.

Creación de contenido basado en HTML: los desarrolladores web pueden aprovechar las habilidades existentes en HTML y CSS. No es necesario aprender API de dibujo basadas en coordenadas ni gestionar objetos de fuentes.

Diseño y paginación automáticos: el ajuste de texto, los saltos de página y el diseño de flujo se realizan automáticamente. Sin cálculo manual de las posiciones de los elementos.

API simplificada: llamadas de método único para operaciones comunes. PdfDocument.Merge() reemplaza patrones complejos de manejo de rutas de archivos.

Desarrollo activo: a medida que aumenta la adopción de .NET 10 y C# 14 hasta 2026, las actualizaciones periódicas de IronPDF garantizan la compatibilidad con las versiones actuales y futuras de .NET .

Conjunto completo de funciones: marca de agua integrada, firmas digitales, compatibilidad con PDF/A y funciones avanzadas de manipulación de PDF de las que carece ZetPDF.

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 estructurados y visualmente atractivos.

...
Leer más

Artículos Relacionados

Key in blue circle

Obtenga su clave de prueba gratuita de 30 días al instante.

Your trial license will be sent to your email address

Sin limitaciones. 100 % desbloqueado. Sin tarjeta de crédito.

bullet_checkedNo se requiere tarjeta de crédito ni creación de cuentaSin limitaciones. 100 % desbloqueado. Sin tarjeta de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Reserve su Demostración en Vivo gratuita
Booking Badge

Confiado por millones de ingenieros en todo el mundo

Logos de clientes de Iron Software
Obtén tu Consulta Sin Compromiso
Completa el formulario a continuación o envía un correo a sales@ironsoftware.com
Tus detalles siempre serán mantenidos confidenciales.
Confiado por millones de ingenieros en todo el mundo
Logos de clientes de Iron Software
Obtenga su Clave de Prueba de 30 días gratis al instante.
No se requiere tarjeta de crédito ni creación de cuenta