Como migrar do HiQPDF para o IronPDF em C#
HiQPdf é uma biblioteca comercial de HTML para PDF publicada pelaHiQPdfSoftware (atual HiQPdf 18.0.2 no nuget.org, fevereiro de 2026). Razões comuns pelas quais os desenvolvedores avaliam alternativas:
-
Versão Gratuita Restritiva:
HiQPdf.Freelimita a saída a 3 páginas por documento — útil para avaliação, não para cargas de trabalho de produção que exigem geração completa de documentos. -
WebKit na Linha Clássica: O pacote Classic
HiQPdfusa um motor baseado em WebKit mais antigo que pode ter dificuldades com frameworks modernos de JavaScript. OHiQPdfinclui uma variante baseada no Chromium (HiQPdf.NG/HiQPdf.Chromium.Windows, além de uma versão para Linux), mas a maior parte do código existente visa o motor Classic. -
Suporte .NET distribuído entre Pacotes: .NET Framework, .NET Core, e .NET Standard 2.0 são todos suportados, mas divididos entre IDs de NuGet separados (HiQPdf, HiQPdf_NetCore, HiQPdf.NG, HiQPdf.Chromium.Windows, HiQPdf_x64) que você deve escolher entre.
-
Pacotes Fragmentados: Múltiplos IDs do NuGet para diferentes plataformas (
HiQPdf,HiQPdf.Free,HiQPdf_NetCore,HiQPdf.NG,HiQPdf.Chromium.Windows) complicam o gerenciamento de dependências. -
Configuração Verbose: Requer configuração através de
Document,Header,Footercadeias de propriedade em vez de uma API de opções de renderização fluente. - Licenciamento Por Desenvolvedor Acumula: $245 Startup / $495 Desenvolvedor / $795 Equipe / $1,095 Enterprise (perpétuo, primeiro ano de atualizações incluído).
Comparação entre HiQPDF e IronPDF
| Aspecto | HiQPdf | IronPDF |
|---|---|---|
| Motor de renderização | WebKit (Classic HiQPdf) or Chromium (HiQPdf.NG / HiQPdf.Chromium.Windows) |
Cromo moderno |
| Nível gratuito | HiQPdf.Free limite de 3 páginas |
Teste completo de 30 dias |
| Suporte a JavaScript moderno | Limitado no Clássico; moderno no NG/Chromium | Completo (React, Angular, Vue) |
| Suporte para .NET Core/5+ | Suportado, mas dividido em múltiplos pacotes NuGet | pacote único e unificado |
| Design de API | Cadeias de propriedades | Opções de renderização fluente |
| Suporte a CSS3 | Parcial no Clássico; completo no NG | Suporte total |
| Documentação | Fragmentado entre linhas de produtos | Abrangente |
| Pacote NuGet | Múltiplas variantes | Pacote único |
Documentos do IronPDF suporte para versões atuais do .NET (.NET Framework 4.6.2+, .NET 6, 7, 8, 9) em um moderno motor de renderização Chromium.
Avaliação da Complexidade da Migração
Esforço estimado por funcionalidade
| Recurso | Complexidade da Migração |
|---|---|
| HTML para PDF | Muito baixo |
| URL para PDF | Muito baixo |
| Mesclar PDFs | Baixo |
| Cabeçalhos/Rodapés | Médio |
| Tamanho da página/Margens | Baixo |
| Modo de disparo/Atrasos | Baixo |
Mudança de paradigma
A mudança fundamental nesta migração paraHiQPdfreside na transição da configuração da cadeia de propriedades para opções de renderização fluente:
HiQPdf: converter.Document.Header.Height = 50;
converter.Documento.Cabeçalho.Adicionar(novo HtmlToPdfVariableElement(...));
IronPDF: renderer.RenderingOptions.TextHeader = new TextHeaderFooter() { ... };
Antes de começar
Pré-requisitos
- .NET Version:IronPDF supports .NET Framework 4.6.2+ and .NET Core 3.1+ / .NET 5+
- Chave de licença: Obtenha sua chave de licença do IronPDF em IronPDF
- Remover HiQPdf: Planejamos remover todas as variantes do pacote NuGet HiQPdf.
Identificar todos os usos do HiQPDF
# FindHiQPdfnamespace 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" .
# FindHiQPdfnamespace 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" .
Alterações no pacote NuGet
# Remove allHiQPdfvariants
dotnet remove package HiQPdf
dotnet remove package HiQPdf.Free
dotnet remove package HiQPdf_NetCore
dotnet remove package HiQPdf_x64
dotnet remove package HiQPdf.NG
dotnet remove package HiQPdf.Chromium.Windows
# Install IronPDF(single package for all platforms)
dotnet add package IronPdf
# Remove allHiQPdfvariants
dotnet remove package HiQPdf
dotnet remove package HiQPdf.Free
dotnet remove package HiQPdf_NetCore
dotnet remove package HiQPdf_x64
dotnet remove package HiQPdf.NG
dotnet remove package HiQPdf.Chromium.Windows
# Install IronPDF(single package for all platforms)
dotnet add package IronPdf
Migração de Início Rápido
Etapa 1: Atualizar a configuração da licença
Antes (HiQPdf):
HtmlToPdf converter = new HtmlToPdf();
converter.SerialNumber = "HIQPDF-SERIAL-NUMBER";
HtmlToPdf converter = new HtmlToPdf();
converter.SerialNumber = "HIQPDF-SERIAL-NUMBER";
Dim converter As New HtmlToPdf()
converter.SerialNumber = "HIQPDF-SERIAL-NUMBER"
Após (IronPDF):
// Set globally at application startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY";
// Set globally at application startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY";
Etapa 2: Atualizar importações de namespace
// Before (HiQPdf)
using HiQPdf;
// After (IronPDF)
using IronPdf;
using IronPdf.Rendering;
// Before (HiQPdf)
using HiQPdf;
// After (IronPDF)
using IronPdf;
using IronPdf.Rendering;
Imports IronPdf
Imports IronPdf.Rendering
Referência completa da API
Mapeamento da Classe Principal
| ClasseHiQPdf | Classe IronPDF |
|---|---|
HtmlToPdf |
ChromePdfRenderer |
PdfDocument |
PdfDocument |
HtmlToPdfVariableElement |
TextHeaderFooter ou HtmlHeaderFooter |
Mapeamento do método de conversão
| MétodoHiQPdf | Método IronPDF |
|---|---|
ConvertHtmlToMemory(html, baseUrl) |
RenderHtmlAsPdf(html) |
ConvertUrlToMemory(url) |
RenderUrlAsPdf(url) |
File.WriteAllBytes(path, bytes) |
pdf.SaveAs(path) |
Mapeamento do método de documento PDF
| MétodoHiQPdf | Método IronPDF |
|---|---|
PdfDocument.FromFile(path) |
PdfDocument.FromFile(path) |
document1.AddDocument(document2) |
PdfDocument.Merge(pdf1, pdf2) |
document.WriteToFile(path) |
pdf.SaveAs(path) |
Mapeamento de espaços reservados para cabeçalho/rodapé
| HiQPdf- Espaço reservado | Espaço reservado para IronPDF | Descrição |
|---|---|---|
{CrtPage} |
{page} |
Número da página atual |
{PageCount} |
{total-pages} |
Número total de páginas |
Exemplos de migração de código
Exemplo 1: Conversão de HTML para PDF
Antes (HiQPdf):
// 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);
}
}
// 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);
}
}
Imports HiQPdf
Imports System
Class Program
Shared Sub Main()
Dim htmlToPdfConverter As New HtmlToPdf()
Dim pdfBuffer As Byte() = htmlToPdfConverter.ConvertUrlToMemory("https://example.com")
System.IO.File.WriteAllBytes("output.pdf", pdfBuffer)
' Convert HTML string
Dim html As String = "<h1>Hello World</h1><p>This is a PDF document.</p>"
Dim pdfFromHtml As Byte() = htmlToPdfConverter.ConvertHtmlToMemory(html, "")
System.IO.File.WriteAllBytes("fromhtml.pdf", pdfFromHtml)
End Sub
End Class
Após (IronPDF):
// 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");
}
}
// 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");
}
}
Imports IronPdf
Imports System
Module Program
Sub Main()
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderUrlAsPdf("https://example.com")
pdf.SaveAs("output.pdf")
' Convert HTML string
Dim html As String = "<h1>Hello World</h1><p>This is a PDF document.</p>"
Dim pdfFromHtml = renderer.RenderHtmlAsPdf(html)
pdfFromHtml.SaveAs("fromhtml.pdf")
End Sub
End Module
A abordagemHiQPdfrequer criar uma instância HtmlToPdf, chamar ConvertUrlToMemory() ou ConvertHtmlToMemory() para obter um array de bytes, e depois escrever bytes manualmente para um arquivo. O ChromePdfRenderer do IronPDF retorna um objeto PdfDocument com um método SaveAs() direto, eliminando a etapa de escrita manual do arquivo. O motor moderno Chromium também oferece uma melhor renderização para conteúdo complexo de HTML/CSS/JavaScript. Consulte a documentação de conversão de HTML para PDF para obter opções de renderização adicionais.
Exemplo 2: Mesclar vários PDFs
Antes (HiQPdf):
// NuGet: Install-Package HiQPdf
using HiQPdf;
using System;
class Program
{
static void Main()
{
// Create first PDF
HtmlToPdf converter1 = new HtmlToPdf();
byte[] pdf1 = converter1.ConvertHtmlToMemory("<h1>First Document</h1>", "");
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");
}
}
// NuGet: Install-Package HiQPdf
using HiQPdf;
using System;
class Program
{
static void Main()
{
// Create first PDF
HtmlToPdf converter1 = new HtmlToPdf();
byte[] pdf1 = converter1.ConvertHtmlToMemory("<h1>First Document</h1>", "");
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");
}
}
Imports HiQPdf
Imports System
Module Program
Sub Main()
' Create first PDF
Dim converter1 As New HtmlToPdf()
Dim pdf1 As Byte() = converter1.ConvertHtmlToMemory("<h1>First Document</h1>", "")
System.IO.File.WriteAllBytes("doc1.pdf", pdf1)
' Create second PDF
Dim converter2 As New HtmlToPdf()
Dim pdf2 As Byte() = converter2.ConvertHtmlToMemory("<h1>Second Document</h1>", "")
System.IO.File.WriteAllBytes("doc2.pdf", pdf2)
' Merge PDFs
Dim document1 As PdfDocument = PdfDocument.FromFile("doc1.pdf")
Dim document2 As PdfDocument = PdfDocument.FromFile("doc2.pdf")
document1.AddDocument(document2)
document1.WriteToFile("merged.pdf")
End Sub
End Module
Após (IronPDF):
// 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");
}
}
// 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");
}
}
Imports IronPdf
Imports System
Module Program
Sub Main()
Dim renderer = New ChromePdfRenderer()
' Create first PDF
Dim pdf1 = renderer.RenderHtmlAsPdf("<h1>First Document</h1>")
pdf1.SaveAs("doc1.pdf")
' Create second PDF
Dim pdf2 = renderer.RenderHtmlAsPdf("<h1>Second Document</h1>")
pdf2.SaveAs("doc2.pdf")
' Merge PDFs
Dim merged = PdfDocument.Merge(pdf1, pdf2)
merged.SaveAs("merged.pdf")
End Sub
End Module
A abordagemHiQPdfrequer carregar documentos de arquivos usando PdfDocument.FromFile(), chamar AddDocument() no primeiro documento para anexar o segundo, depois usar WriteToFile() para salvar. O IronPDF fornece um método PdfDocument.Merge() estático mais limpo que aceita múltiplos objetos PdfDocument diretamente — sem operações intermediárias de arquivo necessárias. Saiba mais sobre como mesclar e dividir PDFs .
Exemplo 3: Cabeçalhos e rodapés em PDF com números de página
Antes (HiQPdf):
// 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);
}
}
// 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);
}
}
Imports HiQPdf
Imports System
Class Program
Shared Sub Main()
Dim htmlToPdfConverter As New HtmlToPdf()
' Add header
htmlToPdfConverter.Document.Header.Height = 50
Dim headerHtml As 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
Dim footerHtml As New HtmlToPdfVariableElement("<div style='text-align:center'>Page {CrtPage} of {PageCount}</div>", "")
htmlToPdfConverter.Document.Footer.Add(footerHtml)
Dim pdfBuffer As Byte() = htmlToPdfConverter.ConvertHtmlToMemory("<h1>Document with Headers and Footers</h1>", "")
System.IO.File.WriteAllBytes("header-footer.pdf", pdfBuffer)
End Sub
End Class
Após (IronPDF):
// 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");
}
}
// 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");
}
}
Imports IronPdf
Imports IronPdf.Rendering
Imports System
Class Program
Shared Sub Main()
Dim renderer As New ChromePdfRenderer()
' Configure header and footer
renderer.RenderingOptions.TextHeader = New TextHeaderFooter() With {
.CenterText = "Page Header",
.FontSize = 12
}
renderer.RenderingOptions.TextFooter = New TextHeaderFooter() With {
.CenterText = "Page {page} of {total-pages}",
.FontSize = 10
}
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Document with Headers and Footers</h1>")
pdf.SaveAs("header-footer.pdf")
End Sub
End Class
A abordagemHiQPdfrequer configurar Document.Header.Height, criar objetos HtmlToPdfVariableElement e chamar Add() nas seções de cabeçalho/rodapé. Espaços reservados para números de página usam a sintaxe {CrtPage} e {PageCount}. O IronPDF fornece uma configuração TextHeaderFooter mais limpa com propriedades CenterText e uma sintaxe de espaço reservado diferente: {page} e {total-pages}. Consulte a documentação sobre cabeçalhos e rodapés para obter opções adicionais, incluindo cabeçalhos baseados em HTML.
Notas críticas sobre migração
Alteração de sintaxe do marcador de posição
A mudança mais importante para documentos com números de página é a sintaxe dos marcadores de posição:
//HiQPdfplaceholders
"Page {CrtPage} of {PageCount}"
//IronPDF placeholders
"Page {page} of {total-pages}"
//HiQPdfplaceholders
"Page {CrtPage} of {PageCount}"
//IronPDF placeholders
"Page {page} of {total-pages}"
'HiQPdfplaceholders
"Page {CrtPage} of {PageCount}"
'IronPDF placeholders
"Page {page} of {total-pages}"
Mapeamento completo de espaços reservados:
{CrtPage}→{page}{PageCount}→{total-pages}
Diferença no método de mesclagem
OHiQPdfmodifica o primeiro documento no mesmo local:
// HiQPdf: Modifies document1
document1.AddDocument(document2);
document1.WriteToFile("merged.pdf");
// HiQPdf: Modifies document1
document1.AddDocument(document2);
document1.WriteToFile("merged.pdf");
' HiQPdf: Modifies document1
document1.AddDocument(document2)
document1.WriteToFile("merged.pdf")
O IronPDF retorna um novo documento mesclado:
// IronPDF: Returns new document
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
// IronPDF: Returns new document
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
' IronPDF: Returns new document
Dim merged = PdfDocument.Merge(pdf1, pdf2)
merged.SaveAs("merged.pdf")
Sem limite de 3 páginas
A versão gratuita doHiQPdflimita a saída a 3 páginas com marcas d'água. Durante o período de avaliação, o IronPDF gera documentos completos sem limitações artificiais.
Reutilize o ChromePdfRenderer
Ao contrário do HiQPdf, onde você pode criar novas instâncias HtmlToPdf para cada conversão, o ChromePdfRenderer do IronPDF deve ser reutilizado:
// IronPDF: Create once, reuse
var renderer = new ChromePdfRenderer();
var pdf1 = renderer.RenderHtmlAsPdf(html1);
var pdf2 = renderer.RenderHtmlAsPdf(html2);
// IronPDF: Create once, reuse
var renderer = new ChromePdfRenderer();
var pdf1 = renderer.RenderHtmlAsPdf(html1);
var pdf2 = renderer.RenderHtmlAsPdf(html2);
' IronPDF: Create once, reuse
Dim renderer As New ChromePdfRenderer()
Dim pdf1 = renderer.RenderHtmlAsPdf(html1)
Dim pdf2 = renderer.RenderHtmlAsPdf(html2)
Solução de problemas
Problema 1: HtmlToPdf não encontrado
Problem: HtmlToPdf class doesn't exist in IronPDF.
Solução: Substitua por ChromePdfRenderer:
// HiQPdf
HtmlToPdf htmlToPdfConverter = new HtmlToPdf();
// IronPDF
var renderer = new ChromePdfRenderer();
// HiQPdf
HtmlToPdf htmlToPdfConverter = new HtmlToPdf();
// IronPDF
var renderer = new ChromePdfRenderer();
' HiQPdf
Dim htmlToPdfConverter As New HtmlToPdf()
' IronPDF
Dim renderer As New ChromePdfRenderer()
Problema 2: ConvertHtmlToMemory não encontrado
Problema: O método ConvertHtmlToMemory() não existe.
Solution: Use RenderHtmlAsPdf():
// HiQPdf
byte[] pdfBytes = converter.ConvertHtmlToMemory(html, "");
// IronPDF
var pdf = renderer.RenderHtmlAsPdf(html);
byte[] pdfBytes = pdf.BinaryData;
// HiQPdf
byte[] pdfBytes = converter.ConvertHtmlToMemory(html, "");
// IronPDF
var pdf = renderer.RenderHtmlAsPdf(html);
byte[] pdfBytes = pdf.BinaryData;
' HiQPdf
Dim pdfBytes As Byte() = converter.ConvertHtmlToMemory(html, "")
' IronPDF
Dim pdf = renderer.RenderHtmlAsPdf(html)
Dim pdfBytes As Byte() = pdf.BinaryData
Problema 3: Os marcadores de página não estão funcionando
Problema: {CrtPage} e {PageCount} aparecem literalmente na saída.
Solução: Atualize para a sintaxe de marcador de posição do IronPDF:
//HiQPdfsyntax (won't work)
"Page {CrtPage} of {PageCount}"
//IronPDF syntax
"Page {page} of {total-pages}"
//HiQPdfsyntax (won't work)
"Page {CrtPage} of {PageCount}"
//IronPDF syntax
"Page {page} of {total-pages}"
'HiQPdfsyntax (won't work)
"Page {CrtPage} of {PageCount}"
'IronPDF syntax
"Page {page} of {total-pages}"
Problema 4: Elemento variável HtmlToPdf não encontrado
Problem: HtmlToPdfVariableElement class doesn't exist.
Solution: Use TextHeaderFooter or HtmlHeaderFooter:
// HiQPdf
HtmlToPdfVariableElement headerHtml = new HtmlToPdfVariableElement("<div>Header</div>", "");
converter.Document.Header.Add(headerHtml);
// IronPDF
renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
CenterText = "Header",
FontSize = 12
};
// HiQPdf
HtmlToPdfVariableElement headerHtml = new HtmlToPdfVariableElement("<div>Header</div>", "");
converter.Document.Header.Add(headerHtml);
// IronPDF
renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
CenterText = "Header",
FontSize = 12
};
' HiQPdf
Dim headerHtml As New HtmlToPdfVariableElement("<div>Header</div>", "")
converter.Document.Header.Add(headerHtml)
' IronPDF
renderer.RenderingOptions.TextHeader = New TextHeaderFooter() With {
.CenterText = "Header",
.FontSize = 12
}
Lista de verificação para migração
Pré-migração
- Inventariar todas as chamadas da APIHiQPdfno código-fonte.
- Documente os tamanhos de página, margens e configurações atuais.
- Identificar configurações de cabeçalho/rodapé e espaços reservados
- Obtenha a chave de licença do IronPDF
- Testar o IronPDF em ambiente de desenvolvimento
Migração de código
- Remover todos os pacotes NuGet doHiQPdf(todas as variantes)
- Instale o pacote NuGet IronPDF:
dotnet add package IronPdf - Atualizar importações de namespace
- Substitua
HtmlToPdfporChromePdfRenderer - Converta
ConvertHtmlToMemory()paraRenderHtmlAsPdf() - Converta
ConvertUrlToMemory()paraRenderUrlAsPdf() - Atualize os espaços reservados do cabeçalho/rodapé (
{CrtPage}→{page},{PageCount}→{total-pages}) - Substitua
HtmlToPdfVariableElementporTextHeaderFooter - Atualize as operações de mesclagem (
AddDocument→PdfDocument.Merge) - Adicionar inicialização da chave de licença na inicialização do sistema
Testando
- Teste de conversão de HTML para PDF
- Teste de conversão de URL para PDF
- Verificar a renderização do cabeçalho/rodapé
- Verificar os marcadores de página
- Teste de fusão de PDFs
- Teste páginas com uso intensivo de JavaScript (agora compatível com o Chromium)
Pós-migração
- Remover o número de série doHiQPdfda configuração
- Atualizar documentação
- Monitore quaisquer diferenças de renderização.

