IRONSOFTWAREHOME
VÍDEOS

Como exportar documentos no formato PDF UA em C#

Curtis Chau
Curtis Chau
Updated: 19 de julho de 2026

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:

  1. Versão Gratuita Restritiva: HiQPdf.Free limita 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.

  2. WebKit na Linha Clássica: O pacote Classic HiQPdf usa 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.

  3. 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.

  4. 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.

  5. Configuração Verbose: Requer configuração através de Document, Header, Footer cadeias de propriedade em vez de uma API de opções de renderização fluente.

  6. 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

AspectoHiQPdfIronPDF
Motor de renderizaçãoWebKit (Classic HiQPdf) or Chromium (HiQPdf.NG / HiQPdf.Chromium.Windows)Cromo moderno
Nível gratuitoHiQPdf.Free limite de 3 páginasTeste completo de 30 dias
Suporte a JavaScript modernoLimitado no Clássico; moderno no NG/ChromiumCompleto (React, Angular, Vue)
Suporte para .NET Core/5+Suportado, mas dividido em múltiplos pacotes NuGetpacote único e unificado
Design de APICadeias de propriedadesOpções de renderização fluente
Suporte a CSS3Parcial no Clássico; completo no NGSuporte total
DocumentaçãoFragmentado entre linhas de produtosAbrangente
Pacote NuGetMúltiplas variantesPacote ú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

RecursoComplexidade da Migração
HTML para PDFMuito baixo
URL para PDFMuito baixo
Mesclar PDFsBaixo
Cabeçalhos/RodapésMédio
Tamanho da página/MargensBaixo
Modo de disparo/AtrasosBaixo

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() { ... };
Text

Antes de começar

Pré-requisitos

  1. **.NET Version:**IronPDF supports .NET Framework 4.6.2+ and .NET Core 3.1+ / .NET 5+
  2. Chave de licença: Obtenha sua chave de licença do IronPDF em IronPDF
  3. 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" .
SHELL

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
SHELL

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";

Após (IronPDF):

// 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;

Referência completa da API

Mapeamento da Classe Principal

ClasseHiQPdfClasse IronPDF
HtmlToPdfChromePdfRenderer
PdfDocumentPdfDocument
HtmlToPdfVariableElementTextHeaderFooter ou HtmlHeaderFooter

Mapeamento do método de conversão

MétodoHiQPdfMé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étodoHiQPdfMé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 reservadoEspaço reservado para IronPDFDescriçã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);
    }
}

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");
    }
}

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");
    }
}

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");
    }
}

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);
    }
}

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");
    }
}

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}"
C#

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");

O IronPDF retorna um novo documento mesclado:

// IronPDF: Returns new document
var 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);

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();

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;

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}"
C#

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
};

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 HtmlToPdf por ChromePdfRenderer
  • Converta ConvertHtmlToMemory() para RenderHtmlAsPdf()
  • Converta ConvertUrlToMemory() para RenderUrlAsPdf()
  • Atualize os espaços reservados do cabeçalho/rodapé ({CrtPage}{page}, {PageCount}{total-pages})
  • Substitua HtmlToPdfVariableElement por TextHeaderFooter
  • Atualize as operações de mesclagem (AddDocumentPdfDocument.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.

Observe: HiQPdf é uma marca registrada de seu respectivo proprietário. Este site não é afiliado, endossado ou patrocinado porHiQPdfSoftware. Todos os nomes de produtos, logotipos e marcas são propriedade de seus respectivos proprietários. As comparações são apenas para fins informativos e refletem informações disponíveis publicamente no momento da redação.
Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais bem estruturados e visualmente atraentes.

...
Leia mais

Artigos relacionados

Key in blue circle

Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.

Your trial license will be sent to your email address

Sem limitações. 100% desbloqueado. Sem cartão de crédito.

bullet_checkedNão é necessário cartão de crédito nem criação de conta.Sem limitações. 100% desbloqueado. Sem cartão de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Agende sua demonstração ao vivo gratuita.
Booking Badge

Aprovado por milhões de engenheiros em todo o mundo.

Logotipos dos clientes da Iron Software
Agende sua consulta sem compromisso.
Preencha o formulário abaixo ou envie um e-mail para sales@ironsoftware.com
Os seus dados serão sempre mantidos em sigilo.
Aprovado por milhões de engenheiros em todo o mundo.
Logotipos dos clientes da Iron Software
Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.
Não é necessário cartão de crédito nem criação de conta.