IRONSOFTWAREHOME

Headers e Rodapés Mais Rápidos em PDFs Grandes

Curtis Chau
Curtis Chau
Updated: 3 de julho de 2026

Adicionar cabeçalhos e rodapés a um PDF muito grande em uma única passagem é lento. Processar o documento em pedaços de páginas de tamanho fixo, renderizar cada lote e depois mesclar as partes novamente para reduzir o tempo total de renderização enquanto mantém a numeração das páginas contínua em todo o documento.

Solução

1. Divida os índices de página em lotes

Escolha um tamanho de pedaço e agrupe os índices de páginas do documento em lotes de tamanho fixo, por exemplo, 300 páginas cada. Pedaços menores são renderizados mais rapidamente individualmente, mas adicionam mais trabalho de mesclagem no final.

2. Copie cada lote em seu próprio documento

Extraia as páginas para o lote atual com CopyPages, fornecendo um documento independente para renderizar.

3. Renderize cabeçalhos e rodapés com numeração contínua

Defina FirstPageNumber para a página inicial do pedaço, para que a numeração cubra o documento inteiro em vez de reiniciar no 1 em cada pedaço.

4. Salve cada pedaço e descarte-o

Escreva cada pedaço em um arquivo temporário e descarte-o. Liberar o pedaço antes do próximo lote impede que a memória aumente durante a execução.

5. Mescle os pedaços no PDF final

Reabra os arquivos temporários, anexe-os em ordem com AppendPdf, salve o resultado e, em seguida, exclua os arquivos temporários.

using IronPdf;
var pdf = PdfDocument.FromFile("input.pdf");
string headerHtml = "<div style='font-size:10px;'>Header</div>";
string footerHtml = "<div style='text-align:right;font-size:10px;'>Page {page} of {total-pages}</div>";
int chunkSize = 300;
var pageChunks = Enumerable.Range(0, pdf.PageCount)
    .GroupBy(i => i / chunkSize)
    .Select(g => g.ToArray())
    .ToList();
var tempFiles = new List<string>();
foreach (var indexes in pageChunks)
{
    var chunkPdf = pdf.CopyPages(indexes);
    int globalStartPage = indexes.First() + 1;
    chunkPdf.AddHtmlHeadersAndFooters(new ChromePdfRenderOptions
    {
        FirstPageNumber = globalStartPage,          // keeps numbering continuous
        HtmlHeader = new HtmlHeaderFooter { HtmlFragment = headerHtml, MaxHeight = 40 },
        HtmlFooter = new HtmlHeaderFooter { HtmlFragment = footerHtml, MaxHeight = 40 }
    });
    string tempFile = Path.GetTempFileName() + ".pdf";
    chunkPdf.SaveAs(tempFile);
    chunkPdf.Dispose();
    tempFiles.Add(tempFile);
}
// Merge the chunks back into one document.
var finalPdf = new PdfDocument(tempFiles.First());
foreach (var file in tempFiles.Skip(1))
{
    using var part = new PdfDocument(file);
    finalPdf.AppendPdf(part);
}
finalPdf.SaveAs("output.pdf");
finalPdf.Dispose();
// Clean up temp files.
foreach (var file in tempFiles)
    File.Delete(file);
C#

FirstPageNumber é a chave: ele é configurado para a página inicial global de cada pedaço, de modo que um rodapé como Page {page} of {total-pages} fique consistente do primeiro ao último pedaço.

Observe: Sem FirstPageNumber, cada pedaço reinicia sua numeração na página 1.

Dicas de Depuração

  • Ajuste o tamanho do pedaço: o valor acima (300) é ajustável, e o ponto em que a divisão começa a compensar depende da sua carga de trabalho.
  • Considere a passagem de mesclagem: o tempo total é a renderização por pedaço mais a mesclagem final, então considere essa passagem extra em qualquer comparação.
  • Mantenha a memória sob controle em trabalhos muito grandes: forçar a coleta de lixo periodicamente durante a mesclagem e ajustar o pool do navegador com BrowserPool.MaxIdleTabs e MaxDynamicHFPagesPerBatch pode ajudar.
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

Pronto para começar?

Nuget Downloads 21,253,952Versão:2026.10recém-lançado

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.
Biblioteca NuGet C# para PDF
Instalar com NuGet

Versão: 2026.10

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. No Solution Explorer, clique com o botão direito do mouse em Referências e selecione Gerenciar Pacotes NuGet.
  2. Selecione Procurar e pesquise "IronPDF".
  3. Selecione o pacote e instale.
DLL de PDF em C#
Baixar DLL

Versão: 2026.10

ou faça o download do Windows Installer aqui .

  1. Baixe e descompacte o IronPDF em um local como ~/Libs dentro do diretório da sua solução.
  2. No Solution Explorer do Visual Studio, clique com o botão direito do mouse em Referências. Selecione Procurar e digite "IronPDF.dll".

Licenças a partir de US$ 999

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.
Os seus dados serão sempre mantidos em sigilo.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Aprovado por milhões de engenheiros em todo o mundo.
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.
Biblioteca NuGet C# para PDF
Instalar com NuGet

Versão: 2026.10

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. No Solution Explorer, clique com o botão direito do mouse em Referências e selecione Gerenciar Pacotes NuGet.
  2. Selecione Procurar e pesquise "IronPDF".
  3. Selecione o pacote e instale.
DLL de PDF em C#
Baixar DLL

Versão: 2026.10

ou faça o download do Windows Installer aqui .

  1. Baixe e descompacte o IronPDF em um local como ~/Libs dentro do diretório da sua solução.
  2. No Solution Explorer do Visual Studio, clique com o botão direito do mouse em Referências. Selecione Procurar e digite "IronPDF.dll".

Licenças a partir de US$ 999