Saltar al pie de página
GUíAS DE MIGRACIóN

Cómo migrar de HiQPdf a IronPDF en C#

Migrar de HiQPdfa IronPDF: Guía completa de migración a C

La migración de HiQPdfaIronPDFtransforma su flujo de trabajo PDF .NET de un antiguo motor de renderizado basado en WebKit con límites de páginas restrictivos a una moderna biblioteca basada en Chromium con compatibilidad total con el marco JavaScript. Esta guía proporciona una ruta de migración completa y paso a paso que elimina la limitación de 3 páginas y la estructura fragmentada de paquetes para desarrolladores .NET profesionales.

Por qué migrar de HiQPdfa IronPDF

Las limitaciones de HiQPdf

HiQPdf es una biblioteca comercial de conversión de HTML a PDF con varias limitaciones que afectan a las aplicaciones de producción:

  1. Versión "gratuita" restrictiva: La versión gratuita impone un límite de 3 páginas con marcas de agua intrusivas, prácticamente inutilizable para cargas de trabajo de producción que requieren la generación de documentos completos.

  2. Motor WebKit antiguo: HiQPdfutiliza un motor de renderización basado en WebKit antiguo que tiene problemas con los marcos de JavaScript modernos como React, Angular y Vue.

  3. Soporte poco claro de .NET Core: La documentación no aclara explícitamente la compatibilidad con .NET Core / .NET 5+, lo que crea incertidumbre para el desarrollo de aplicaciones modernas.

  4. Paquetes fragmentados: Múltiples paquetes NuGet para diferentes plataformas (HiQPdf, HiQPdf.Free, HiQPdf.NetCore, HiQPdf.NetCore.x64, HiQPdf.Client) complican la gestión de dependencias.

  5. API compleja: Requiere una configuración verbosa a través de cadenas de propiedades Document, Header, Footer en lugar de métodos fluidos e intuitivos.

  6. Compatibilidad limitada con JavaScript: el motor WebKit tiene dificultades para procesar contenidos generados por marcos JavaScript modernos y diseños dinámicos complejos.

Comparación entre HiQPdfe IronPDF

AspectoHiQPdfIronPDF
Motor de renderizadoBasado en WebKit (más antiguo)Chromium moderno
Nivel gratuitolímite de 3 páginas + marca de aguaprueba completa de 30 días
Compatibilidad con JS modernoLimitadoCompleto (React, Angular, Vue)
compatibilidad con .NET Core/5+Se necesitan varios paquetesUn único paquete unificado
Diseño de APICadenas de propiedades complejasAPI limpia y fluida
Compatibilidad con CSS3ParcialSoporte completo
DocumentaciónFragmentadoCompleto
Paquete NuGetMúltiples variantesPaquete único

Para los equipos que planifican la adopción de .NET 10 y C# 14 hasta 2025 y 2026,IronPDFproporciona una base preparada para el futuro con soporte documentado para las últimas versiones de .NET y un moderno motor de renderizado Chromium.


Evaluación de la complejidad de la migración

Esfuerzo estimado por función

CaracterísticaComplejidad de la migraciónNotas
HTML a PDFMuy bajoSustitución directa de métodos
URL a PDFMuy bajoSustitución directa de métodos
Fusionar PDFBajoEnfoque de fusión diferente
Encabezados/pies de páginaMedioCambio de sintaxis del marcador de posición
Tamaño de página/MargenesBajoMismas unidades (mm)
TriggerMode/DelaysBajoMapeo de propiedades

Cambio de paradigma

El cambio fundamental en esta migración de HiQPdfes de configuración de la cadena de propiedades a opciones de renderizado fluido:

using IronPdf; HiQPdf: convertidor.Documento.Encabezado.Altura = 50; converter.Document.Header.Add(new HtmlToPdfVariableElement(...));

IronPDF: renderer.RenderingOptions.TextHeader = new TextHeaderFooter() { ... }; using IronPdf;


Antes de empezar

Prerrequisitos

  1. .NET Version:IronPDFes compatible con .NET Framework 4.6.2+ y .NET Core 3.1+ / .NET 5/6/7/8/9+
  2. Clave de licencia: Obtenga su clave de licencia deIronPDFen ironpdf.com
  3. Eliminar HiQPdf: Plan para eliminar todas las variantes del paquete NuGet de HiQPdf

Identificar todos los usos de HiQPdf

using IronPdf;bash

Find HiQPdfnamespace usage

grep -r "using HiQPdf|HtmlToPdf|PdfDocument" --include="*.cs" .

Find header/footer usage

grep -r ".Header.|.Footer.|HtmlToPdfVariableElement" --include="*.cs" .

Find placeholder syntax

grep -r "CrtPage|PageCount" --include="*.cs" .

Find NuGet references

grep -r "HiQPdf" --include="*.csproj" . using IronPdf;

Cambios en el paquete NuGet

using IronPdf;bash

Remove all HiQPdfvariants

dotnet remove package HiQPdf dotnet remove package HiQPdf.Free dotnet remove package HiQPdf.NetCore dotnet remove package HiQPdf.NetCore.x64 dotnet remove package HiQPdf.Client

InstallIronPDF(single package for all platforms)

dotnet add package IronPdf using IronPdf;


Inicio rápido de la migración

Paso 1: Actualizar la configuración de la licencia

Antes (HiQPdf):

using IronPdf;csharp HtmlToPdf converter = new HtmlToPdf(); converter.SerialNumber = "HIQPDF-SERIAL-NUMBER"; using IronPdf;

Después (IronPDF):

using IronPdf;csharp // Set globally at application startup IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY"; using IronPdf;

Paso 2: Actualizar las importaciones de espacios de nombres

using IronPdf;csharp // Before (HiQPdf) using HiQPdf;

// After (IronPDF) using IronPdf; using IronPdf.Rendering; using IronPdf;


Referencia completa de la API

Mapeo de clases principales

Clase HiQPdfClase IronPDFNotas
<código>HtmlToPdf</código<código>ChromePdfRenderer</códigoClase principal del conversor
Documento PDFDocumento PDFMismo nombre, distinto espacio de nombres
<código>HtmlToPdfVariableElement</código<código>TextHeaderFooter</código> o <código>HtmlHeaderFooter</código>Contenido de cabecera/pie de página

Mapeo de métodos de conversión

Método HiQPdfMétodo IronPDFNotas
<código>ConvertHtmlToMemory(html, baseUrl)</código<código>RenderHtmlAsPdf(html)</códigoDevuelve PdfDocument
<código>ConvertUrlToMemory(url)</código<código>RenderUrlAsPdf(url)</códigoDevuelve PdfDocument
<código>File.WriteAllBytes(ruta, bytes)</código<código>pdf.SaveAs(ruta)</códigoMétodo de guardado directo

Mapeo de métodos de documentos PDF

Método HiQPdfMétodo IronPDFNotas
<código>PdfDocument.FromFile(path)</código<código>PdfDocument.FromFile(path)</códigoMismo nombre de método
<código>document1.AddDocument(document2)</códigoPdfDocument.Merge(pdf1, pdf2)Método de fusión estática
<código>document.WriteToFile(ruta)</código<código>pdf.SaveAs(ruta)</códigoNombre de método diferente

Mapeo de marcadores de posición de encabezado/pie

Marcador de posición HiQPdfMarcador de posición IronPDFDescripción
{CrtPage}{page}Número de página actual
{PageCount}{total de páginas}Número total de páginas

Ejemplos de migración de código

Ejemplo 1: Conversión de HTML a PDF

Antes (HiQPdf):

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

class Program { static void Main() { HtmlToPdf htmlToPdfConverter = new HtmlToPdf(); byte[] pdfBuffer = htmlToPdfConverter.ConvertUrlToMemory("https://example.com"); System.IO.File.WriteAllBytes("output.pdf", pdfBuffer);

    // Convert HTML string
    string html = "<h1>Hello World</h1><p>This is a PDF document.</p>";
    byte[] pdfFromHtml = htmlToPdfConverter.ConvertHtmlToMemory(html, "");
    System.IO.File.WriteAllBytes("fromhtml.pdf", pdfFromHtml);
}

} using IronPdf;

Después (IronPDF):

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

class Program { static void Main() { var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderUrlAsPdf("https://example.com"); pdf.SaveAs("output.pdf");

    // Convert HTML string
    string html = "<h1>Hello World</h1><p>This is a PDF document.</p>";
    var pdfFromHtml = renderer.RenderHtmlAsPdf(html);
    pdfFromHtml.SaveAs("fromhtml.pdf");
}

} using IronPdf;

El método HiQPdfrequiere crear una instancia HtmlToPdf, llamar a ConvertUrlToMemory() o ConvertHtmlToMemory() para obtener una matriz de bytes y, a continuación, escribir manualmente los bytes en un archivo. El <código>ChromePdfRenderer</códigodeIronPDFdevuelve un objeto Documento PDFcon un método directo SaveAs(), eliminando el paso de escritura manual del archivo. El moderno motor Chromium también proporciona un mejor renderizado para contenidos HTML/CSS/JavaScript complejos. Consulte la documentación HTML a PDF para obtener más opciones de conversión.

Ejemplo 2: Combinar varios PDF

Antes (HiQPdf):

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

class Program { static void Main() { // Create first PDF HtmlToPdf converter1 = new HtmlToPdf(); byte[] pdf1 = converter1.ConvertHtmlToMemory("

First Document

", ""); System.IO.File.WriteAllBytes("doc1.pdf", pdf1);

    // Create second PDF
    HtmlToPdf converter2 = new HtmlToPdf();
    byte[] pdf2 = converter2.ConvertHtmlToMemory("<h1>Second Document</h1>", "");
    System.IO.File.WriteAllBytes("doc2.pdf", pdf2);

    // Merge PDFs
    PdfDocument document1 = PdfDocument.FromFile("doc1.pdf");
    PdfDocument document2 = PdfDocument.FromFile("doc2.pdf");
    document1.AddDocument(document2);
    document1.WriteToFile("merged.pdf");
}

} using IronPdf;

Después (IronPDF):

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

class Program { static void Main() { var renderer = new ChromePdfRenderer();

    // Create first PDF
    var pdf1 = renderer.RenderHtmlAsPdf("<h1>First Document</h1>");
    pdf1.SaveAs("doc1.pdf");

    // Create second PDF
    var pdf2 = renderer.RenderHtmlAsPdf("<h1>Second Document</h1>");
    pdf2.SaveAs("doc2.pdf");

    // Merge PDFs
    var merged = PdfDocument.Merge(pdf1, pdf2);
    merged.SaveAs("merged.pdf");
}

} using IronPdf;

El enfoque de HiQPdfrequiere cargar documentos desde archivos mediante PdfDocument.FromFile(), llamar a AddDocument() en el primer documento para añadir el segundo y, a continuación, utilizar WriteToFile() para guardar.IronPDFproporciona un método estático PdfDocument.Merge() más limpio que acepta varios objetos Documento PDFdirectamente, sin necesidad de operaciones de archivo intermedias. Más información sobre mezclar y dividir archivos PDF.

Ejemplo 3: Encabezados y pies de página de PDF con números de página

Antes (HiQPdf):

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

class Program { static void Main() { HtmlToPdf htmlToPdfConverter = new HtmlToPdf();

    // Add header
    htmlToPdfConverter.Document.Header.Height = 50;
    HtmlToPdfVariableElement headerHtml = new HtmlToPdfVariableElement("<div style='text-align:center'>Page Header</div>", "");
    htmlToPdfConverter.Document.Header.Add(headerHtml);

    // Add footer with page number
    htmlToPdfConverter.Document.Footer.Height = 50;
    HtmlToPdfVariableElement footerHtml = new HtmlToPdfVariableElement("<div style='text-align:center'>Page {CrtPage} of {PageCount}</div>", "");
    htmlToPdfConverter.Document.Footer.Add(footerHtml);

    byte[] pdfBuffer = htmlToPdfConverter.ConvertHtmlToMemory("<h1>Document with Headers and Footers</h1>", "");
    System.IO.File.WriteAllBytes("header-footer.pdf", pdfBuffer);
}

} using IronPdf;

Después (IronPDF):

using IronPdf;csharp // NuGet: Install-Package IronPdf using IronPdf; using IronPdf.Rendering; using System;

class Program { static void Main() { var renderer = new ChromePdfRenderer();

    // Configure header and footer
    renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
    {
        CenterText = "Page Header",
        FontSize = 12
    };

    renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
    {
        CenterText = "Page {page} of {total-pages}",
        FontSize = 10
    };

    var pdf = renderer.RenderHtmlAsPdf("<h1>Document with Headers and Footers</h1>");
    pdf.SaveAs("header-footer.pdf");
}

} using IronPdf;

El enfoque de HiQPdfrequiere establecer Document.Header.Height, crear objetos <código>HtmlToPdfVariableElement</códigoy llamar a Add() en las secciones de encabezado/pie. Los marcadores de posición de número de página utilizan la sintaxis {CrtPage}y {PageCount}.IronPDFproporciona una configuración TextHeaderFooter más limpia con propiedades CenterText y una sintaxis de marcador de posición diferente: {page}y {total-pages}. Consulte la documentación cabeceras y pies de página para obtener más opciones, incluidas las cabeceras basadas en HTML.


Notas de migración críticas

Cambio en la sintaxis de los marcadores

El cambio más importante para los documentos con números de página es la sintaxis del marcador de posición:

using IronPdf;csharp // HiQPdfplaceholders "Page {CrtPage} of {PageCount}"

//IronPDFplaceholders "Page {page} of {total-pages}" using IronPdf;

Mapeo completo de marcadores de posición:

  • {CrtPage}{page}
  • {PageCount}{total-pages}

Diferencia entre métodos de fusión

HiQPdf modifica el primer documento en su lugar:

using IronPdf;csharp // HiQPdf: Modifies document1 document1.AddDocument(document2); document1.WriteToFile("merged.pdf"); using IronPdf;

IronPDF devuelve un nuevo documento fusionado:

using IronPdf;csharp // IronPDF: Returns new document var merged = PdfDocument.Merge(pdf1, pdf2); merged.SaveAs("merged.pdf"); using IronPdf;

Sin límite de 3 páginas

La versión gratuita de HiQPdftiene un máximo de 3 páginas con marcas de agua.IronPDFgenera documentos completos sin limitaciones artificiales durante el periodo de prueba.

Reutilizar ChromePdfRenderer

A diferencia de HiQPdf, donde es posible crear nuevas instancias de <código>HtmlToPdf</códigopara cada conversión, el <código>ChromePdfRenderer</códigodeIronPDFdebe reutilizarse:

using IronPdf;csharp // IronPDF: Create once, reuse var renderer = new ChromePdfRenderer(); var pdf1 = renderer.RenderHtmlAsPdf(html1); var pdf2 = renderer.RenderHtmlAsPdf(html2); using IronPdf;


Solución de problemas

Cuestión 1: HtmlToPdf no encontrado

Problema: la clase <código>HtmlToPdf</códigono existe en IronPDF.

Solución: Sustituir por ChromePdfRenderer:

using IronPdf;csharp // HiQPdf HtmlToPdf htmlToPdfConverter = new HtmlToPdf();

// IronPDF var renderer = new ChromePdfRenderer(); using IronPdf;

Asunto 2: ConvertHtmlToMemory no se encuentra

Problema: el método ConvertHtmlToMemory() no existe.

Solución: Utilice RenderHtmlAsPdf():

using IronPdf;csharp // HiQPdf byte[] pdfBytes = converter.ConvertHtmlToMemory(html, "");

// IronPDF var pdf = renderer.RenderHtmlAsPdf(html); byte[] pdfBytes = pdf.BinaryData; using IronPdf;

Asunto 3: Los marcadores de posición de número de página no funcionan

Problema: {CrtPage}y {PageCount}aparecen literalmente en la salida.

Solución: Actualización de la sintaxis de los marcadores de posición de IronPDF:

using IronPdf;csharp // HiQPdfsyntax (won't work) "Page {CrtPage} of {PageCount}"

//IronPDFsyntax "Page {page} of {total-pages}" using IronPdf;

Edición 4: HtmlToPdfVariableElement No Encontrado

Problema: la clase <código>HtmlToPdfVariableElement</códigono existe.

Solución: Utilice TextHeaderFooter o HtmlHeaderFooter:

using IronPdf;csharp // HiQPdf HtmlToPdfVariableElement headerHtml = new HtmlToPdfVariableElement("

Header
", ""); converter.Document.Header.Add(headerHtml);

// IronPDF renderer.RenderingOptions.TextHeader = new TextHeaderFooter() { CenterText = "Header", FontSize = 12 }; using IronPdf;


Lista de comprobación de la migración

Pre-Migración

  • [ ] Inventario de todas las llamadas a la API de HiQPdfen codebase
  • [ ] Documentar los tamaños de página, márgenes y ajustes actuales
  • [ ] Identificar configuraciones de encabezado/pie de página y marcadores de posición
  • [ ] Obtener la clave de licencia de IronPDF
  • [ ] ProbarIronPDFen un entorno de desarrollo

Migración de código

  • [ ] Eliminar todos los paquetes NuGet de HiQPdf(todas las variantes)
  • [ ] Instalar el paquete NuGet IronPdf: dotnet add package IronPdf
  • [ ] Actualizar las importaciones de espacios de nombres
  • [ ] Sustituir <código>HtmlToPdf</códigopor ChromePdfRenderer
  • [ ] Convertir ConvertHtmlToMemory() a RenderHtmlAsPdf()
  • [ ] Convertir ConvertUrlToMemory() a RenderUrlAsPdf()
  • [ ] Actualizar los marcadores de posición de encabezado/pie de página ({CrtPage}{page}, {PageCount}{total-pages})
  • [ ] Sustituir <código>HtmlToPdfVariableElement</códigopor TextHeaderFooter
  • [ ] Actualizar operaciones de fusión (AddDocumentPdfDocument.Merge)
  • [ ] Añadir inicialización de clave de licencia al inicio

Pruebas

  • [ ] Prueba de conversión de HTML a PDF
  • [ ] Prueba de conversión de URL a PDF
  • [ ] Verificar el renderizado de encabezado/pie de página
  • [ ] Verificar los marcadores de posición de número de página
  • [ ] Prueba de fusión de PDF
  • [ ] Prueba de páginas con mucho JavaScript (ahora compatible con Chromium)

Posmigración

  • [ ] Eliminar el número de serie de HiQPdfde la configuración
  • [ ] Actualización de la documentación
  • [ ] Supervisión de las diferencias de representación

Conclusión

La migración de HiQPdfaIronPDFofrece varias ventajas significativas para las aplicaciones .NET. Se obtiene un moderno motor de renderizado Chromium con soporte completo para React, Angular, Vue y frameworks JavaScript complejos. Desaparece la limitación de 3 páginas con marcas de agua, sustituida por una auténtica versión de prueba con todas las funciones. Un único paquete NuGet unificado sustituye a las variantes fragmentadas de HiQPdf.

Los cambios clave en esta migración son:

  1. Sustitución de clases: <código>HtmlToPdf</código→ ChromePdfRenderer
  2. Sustitución de métodos: ConvertHtmlToMemory()RenderHtmlAsPdf().BinaryData
  3. Enfoque de fusión: <código>document1.AddDocument(document2)</código→ PdfDocument.Merge(pdf1, pdf2)
  4. Sintaxis del marcador de posición: {CrtPage}{page}, {PageCount}{total-pages}
  5. Pie de página: <código>HtmlToPdfVariableElement</código→ TextHeaderFooter

Explore la documentación completa de IronPDF, tutoriales y referencia de API para acelerar su migración a HiQPdf.

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