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:
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.
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.
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.
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.
API compleja: Requiere una configuración verbosa a través de cadenas de propiedades
Document,Header,Footeren lugar de métodos fluidos e intuitivos.- 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
| Aspecto | HiQPdf | IronPDF |
|---|---|---|
| Motor de renderizado | Basado en WebKit (más antiguo) | Chromium moderno |
| Nivel gratuito | límite de 3 páginas + marca de agua | prueba completa de 30 días |
| Compatibilidad con JS moderno | Limitado | Completo (React, Angular, Vue) |
| compatibilidad con .NET Core/5+ | Se necesitan varios paquetes | Un único paquete unificado |
| Diseño de API | Cadenas de propiedades complejas | API limpia y fluida |
| Compatibilidad con CSS3 | Parcial | Soporte completo |
| Documentación | Fragmentado | Completo |
| Paquete NuGet | Múltiples variantes | Paquete ú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ística | Complejidad de la migración | Notas |
|---|---|---|
| HTML a PDF | Muy bajo | Sustitución directa de métodos |
| URL a PDF | Muy bajo | Sustitución directa de métodos |
| Fusionar PDF | Bajo | Enfoque de fusión diferente |
| Encabezados/pies de página | Medio | Cambio de sintaxis del marcador de posición |
| Tamaño de página/Margenes | Bajo | Mismas unidades (mm) |
| TriggerMode/Delays | Bajo | Mapeo 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
- .NET Version:IronPDFes compatible con .NET Framework 4.6.2+ y .NET Core 3.1+ / .NET 5/6/7/8/9+
- Clave de licencia: Obtenga su clave de licencia deIronPDFen ironpdf.com
- 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 HiQPdf | Clase IronPDF | Notas |
|---|---|---|
| <código>HtmlToPdf</código | <código>ChromePdfRenderer</código | Clase principal del conversor |
Documento PDF | Documento PDF | Mismo 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 HiQPdf | Método IronPDF | Notas |
|---|---|---|
| <código>ConvertHtmlToMemory(html, baseUrl)</código | <código>RenderHtmlAsPdf(html)</código | Devuelve PdfDocument |
| <código>ConvertUrlToMemory(url)</código | <código>RenderUrlAsPdf(url)</código | Devuelve PdfDocument |
| <código>File.WriteAllBytes(ruta, bytes)</código | <código>pdf.SaveAs(ruta)</código | Método de guardado directo |
Mapeo de métodos de documentos PDF
| Método HiQPdf | Método IronPDF | Notas |
|---|---|---|
| <código>PdfDocument.FromFile(path)</código | <código>PdfDocument.FromFile(path)</código | Mismo nombre de método |
| <código>document1.AddDocument(document2)</código | PdfDocument.Merge(pdf1, pdf2) | Método de fusión estática |
| <código>document.WriteToFile(ruta)</código | <código>pdf.SaveAs(ruta)</código | Nombre de método diferente |
Mapeo de marcadores de posición de encabezado/pie
| Marcador de posición HiQPdf | Marcador de posición IronPDF | Descripció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("
// 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()aRenderHtmlAsPdf() - [ ] Convertir
ConvertUrlToMemory()aRenderUrlAsPdf() - [ ] 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 (
AddDocument→PdfDocument.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:
- Sustitución de clases: <código>HtmlToPdf</código→
ChromePdfRenderer - Sustitución de métodos:
ConvertHtmlToMemory()→RenderHtmlAsPdf().BinaryData - Enfoque de fusión: <código>document1.AddDocument(document2)</código→
PdfDocument.Merge(pdf1, pdf2) - Sintaxis del marcador de posición:
{CrtPage}→{page},{PageCount}→{total-pages} - 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.






