Como adicionar números de página em um PDF usando C#
"Portable Document Format", ou PDF, é um formato de arquivo criado pela Adobe. Os arquivos PDF são muito úteis na apresentação de trabalhos que precisam ter o texto e as fotos formatados. No mundo atual, os arquivos PDF são essenciais e utilizados para a criação de documentos e faturamento em todos os setores corporativos. Graças às diversas bibliotecas de PDF disponíveis no mercado, criar PDFs tornou-se praticamente instintivo. Para escolher a biblioteca de PDF mais adequada para você, é fundamental avaliar os benefícios e as características de cada uma antes de utilizá-la em seu projeto.
Neste artigo, veremos como adicionar números de página em um PDF usando o iTextSharp em C#. Além disso, compararemos o iTextSharp com o IronPDF .
Como adicionar números de página em um PDF usando iTextSharp em C
- Crie um novo projeto em C# usando qualquer IDE.
- Crie um novo objeto PDF.
- Adicione os números de página ao rodapé HTML.
- Criar um PDF a partir de material HTML.
- Salve um arquivo PDF em seu computador.
O que é o IronPDF?
IronPDF é um .NET Framework robusto para PDF que os desenvolvedores usam para produzir, visualizar e editar PDFs com facilidade. O IronPDF é uma ferramenta sofisticada que funciona internamente com um mecanismo baseado no Chromium. Ele pode converter arquivos HTML5, JavaScript, CSS e de imagem para PDF, adicionar cabeçalhos e rodapés personalizados e produzir PDFs exatamente como aparecem em um navegador. O IronPDF suporta diversos formatos online e para a internet, incluindo HTML, ASPX, Razor View e MVC.
Funcionalidades do IronPDF
- Utilizando código .NET C# para criar, ler e editar arquivos PDF de forma simples.
- O processo de criação de PDFs a partir de um link de URL de um site, gerenciando User-Agents, Proxies, Cookies, cabeçalhos HTTP e variáveis de formulário para permitir o login usando formulários de login HTML.
- Remover imagens de arquivos PDF já existentes.
- Incluindo elementos de um PDF: tabelas, texto, fotos, marcadores, marcas d'água, cabeçalhos, rodapés e outros.
- A capacidade de separar e combinar páginas de vários documentos PDF com facilidade.
Para saber mais sobre a documentação do IronPDF , consulte aqui .
Instalando o IronPDF
Nas Ferramentas do Visual Studio, selecione o Gerenciador de Pacotes NuGet e você encontrará a interface de linha de comando do Visual Studio em Ferramentas. O comando abaixo deve ser inserido na aba de terminal do gerenciador de pacotes.
Install-Package IronPdf
Ou podemos usar o método do gerenciador de pacotes. É possível instalar o pacote diretamente na solução usando a opção Gerenciador de Pacotes NuGet do Visual Studio. Existe uma caixa de pesquisa disponível para localizar pacotes no site do NuGet . Basta procurar por "IronPDF" no gerenciador de pacotes, como ilustra a captura de tela abaixo:

A lista de resultados de pesquisa relevantes é exibida acima. Para instalar o pacote no seu sistema, faça as seleções necessárias.
Agora que o pacote foi baixado e instalado, ele pode ser utilizado no projeto atual.
O que é o iTextSharp?
iTextSharp é uma biblioteca flexível para produzir e modificar documentos PDF em C#. Oferece diversas funcionalidades, como criptografia, fusão de PDFs, extração de texto e imagens, e muito mais. O iTextSharp é uma ferramenta eficiente para diversas tarefas, incluindo a adição de números de página em PDFs.
Recursos do iTextSharp
- Uma API para gerar documentos PDF está disponível através da biblioteca iText.
- Tanto strings HTML quanto XML podem ser analisadas e convertidas em arquivos PDF usando o programa iText.
- Podemos adicionar marcadores, números de página e indicadores aos nossos documentos PDF usando a biblioteca iText.
- Também podemos dividir um documento PDF em vários PDFs ou mesclar vários documentos PDF em um único PDF usando a biblioteca iText.
- Podemos modificar formulários PDF com o iText.
Instale o iTextSharp
Utilize o gerenciador de pacotes NuGet para procurar o iText. O iText7 e o iText.pdfhtml são instalações obrigatórias, pois as funcionalidades do iText estão divididas em vários pacotes.
Caso opte pela interface visual de linha de comando, os seguintes pacotes precisam ser instalados:
Install-Package iTextSharp
Como o iText 7 é a versão mais recente, é a que estamos utilizando em nossa solução.
Adicionando números de página usando o IronPDF
Adicionar números de página a arquivos PDF é simples graças à biblioteca abrangente do IronPDF. Para ilustrar, veja o código abaixo.
using IronPdf;
class Program
{
static void Main(string[] args)
{
// Create a new HtmlToPdf renderer instance
var renderer = new HtmlToPdf();
// Define the HTML content with a header
string header = "<h1>Hello IronPDF!</h1>";
// Render the HTML as a PDF document
PdfDocument pdf = renderer.RenderHtmlAsPdf(header);
// Define the HTML footer with page numbers
HtmlHeaderFooter htmlFooter = new HtmlHeaderFooter()
{
HtmlFragment = "<center><i>{page} of {total-pages}</i></center>"
};
// Add footer to the PDF
pdf.AddHtmlFooters(htmlFooter);
// Save the PDF document to a file
pdf.SaveAs("output.pdf");
}
}
using IronPdf;
class Program
{
static void Main(string[] args)
{
// Create a new HtmlToPdf renderer instance
var renderer = new HtmlToPdf();
// Define the HTML content with a header
string header = "<h1>Hello IronPDF!</h1>";
// Render the HTML as a PDF document
PdfDocument pdf = renderer.RenderHtmlAsPdf(header);
// Define the HTML footer with page numbers
HtmlHeaderFooter htmlFooter = new HtmlHeaderFooter()
{
HtmlFragment = "<center><i>{page} of {total-pages}</i></center>"
};
// Add footer to the PDF
pdf.AddHtmlFooters(htmlFooter);
// Save the PDF document to a file
pdf.SaveAs("output.pdf");
}
}
Imports IronPdf
Friend Class Program
Shared Sub Main(ByVal args() As String)
' Create a new HtmlToPdf renderer instance
Dim renderer = New HtmlToPdf()
' Define the HTML content with a header
Dim header As String = "<h1>Hello IronPDF!</h1>"
' Render the HTML as a PDF document
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(header)
' Define the HTML footer with page numbers
Dim htmlFooter As New HtmlHeaderFooter() With {.HtmlFragment = "<center><i>{page} of {total-pages}</i></center>"}
' Add footer to the PDF
pdf.AddHtmlFooters(htmlFooter)
' Save the PDF document to a file
pdf.SaveAs("output.pdf")
End Sub
End Class
Primeiro, definimos o texto HTML que precisa ser convertido em PDF. Este conteúdo HTML pode consistir em um único parágrafo HTML ou em uma página HTML inteira. Em seguida, criamos uma instância da classe HtmlToPdf, que oferece a função de conversão de HTML para PDF RenderHtmlAsPdf.
O conteúdo HTML é passado como argumento para a função RenderHtmlAsPdf. Especificamos o material HTML que deve ser convertido em PDF. Os números de página são representados como marcadores de posição ou pelo código {page} of {total-pages} no rodapé deste texto HTML.
O documento PDF criado é retornado por este método como um objeto PdfDocument. Usando o método SaveAs, salvamos o documento PDF em um arquivo com o nome "output.pdf". Alternativamente, podemos usar a função OpenInDefaultPDFViewer para abrir o documento PDF criado com o leitor de PDF padrão do sistema. Também podemos usar o método acima para adicionar números de página a um arquivo PDF existente.

Para saber mais sobre o código IronPDF , consulte aqui .
Adicionando números de página usando o iTextSharp
Primeiro, vamos usar o iTextSharp para gerar um novo documento PDF. Aqui está uma ilustração básica de como criar um novo documento PDF com número de página:
using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;
namespace ConsoleApp1
{
internal class Program
{
static void Main(string[] args)
{
// Create a new PDF document
Document doc = new Document();
PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream("output.pdf", FileMode.Create));
// Open the document to add content
doc.Open();
doc.Add(new Paragraph("Hello, world!"));
// Attach page number event to PDF writer
writer.PageEvent = new PageNumberEventHandler();
// Close the document
doc.Close();
}
}
public class PageNumberEventHandler : PdfPageEventHelper
{
public override void OnOpenDocument(PdfWriter writer, Document document)
{
base.OnOpenDocument(writer, document);
}
public override void OnEndPage(PdfWriter writer, Document document)
{
base.OnEndPage(writer, document);
// Create a table to hold the page number
PdfPTable table = new PdfPTable(1);
table.TotalWidth = 300f;
table.HorizontalAlignment = Element.ALIGN_CENTER;
PdfPCell cell = new PdfPCell(new Phrase($"Page {writer.PageNumber}"));
cell.Border = 0;
table.AddCell(cell);
// Write the table at the bottom of the page
table.WriteSelectedRows(0, -1, 150f, document.Bottom, writer.DirectContent);
}
public override void OnCloseDocument(PdfWriter writer, Document document)
{
base.OnCloseDocument(writer, document);
}
}
}
using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;
namespace ConsoleApp1
{
internal class Program
{
static void Main(string[] args)
{
// Create a new PDF document
Document doc = new Document();
PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream("output.pdf", FileMode.Create));
// Open the document to add content
doc.Open();
doc.Add(new Paragraph("Hello, world!"));
// Attach page number event to PDF writer
writer.PageEvent = new PageNumberEventHandler();
// Close the document
doc.Close();
}
}
public class PageNumberEventHandler : PdfPageEventHelper
{
public override void OnOpenDocument(PdfWriter writer, Document document)
{
base.OnOpenDocument(writer, document);
}
public override void OnEndPage(PdfWriter writer, Document document)
{
base.OnEndPage(writer, document);
// Create a table to hold the page number
PdfPTable table = new PdfPTable(1);
table.TotalWidth = 300f;
table.HorizontalAlignment = Element.ALIGN_CENTER;
PdfPCell cell = new PdfPCell(new Phrase($"Page {writer.PageNumber}"));
cell.Border = 0;
table.AddCell(cell);
// Write the table at the bottom of the page
table.WriteSelectedRows(0, -1, 150f, document.Bottom, writer.DirectContent);
}
public override void OnCloseDocument(PdfWriter writer, Document document)
{
base.OnCloseDocument(writer, document);
}
}
}
Imports System.IO
Imports iTextSharp.text
Imports iTextSharp.text.pdf
Namespace ConsoleApp1
Friend Class Program
Shared Sub Main(ByVal args() As String)
' Create a new PDF document
Dim doc As New Document()
Dim writer As PdfWriter = PdfWriter.GetInstance(doc, New FileStream("output.pdf", FileMode.Create))
' Open the document to add content
doc.Open()
doc.Add(New Paragraph("Hello, world!"))
' Attach page number event to PDF writer
writer.PageEvent = New PageNumberEventHandler()
' Close the document
doc.Close()
End Sub
End Class
Public Class PageNumberEventHandler
Inherits PdfPageEventHelper
Public Overrides Sub OnOpenDocument(ByVal writer As PdfWriter, ByVal document As Document)
MyBase.OnOpenDocument(writer, document)
End Sub
Public Overrides Sub OnEndPage(ByVal writer As PdfWriter, ByVal document As Document)
MyBase.OnEndPage(writer, document)
' Create a table to hold the page number
Dim table As New PdfPTable(1)
table.TotalWidth = 300F
table.HorizontalAlignment = Element.ALIGN_CENTER
Dim cell As New PdfPCell(New Phrase($"Page {writer.PageNumber}"))
cell.Border = 0
table.AddCell(cell)
' Write the table at the bottom of the page
table.WriteSelectedRows(0, -1, 150F, document.Bottom, writer.DirectContent)
End Sub
Public Overrides Sub OnCloseDocument(ByVal writer As PdfWriter, ByVal document As Document)
MyBase.OnCloseDocument(writer, document)
End Sub
End Class
End Namespace
Primeiro, criamos um novo objeto para Document e PdfWriter, o que nos permite criar um arquivo PDF vazio. Você pode incluir texto, fotos, tabelas e outros tipos de material em seu documento PDF. Vamos usar um Paragraph para adicionar algum texto de exemplo para fins de demonstração. O passo importante agora é adicionar os números de página ao documento PDF. Para isso, usaremos os eventos de página do iTextSharp. Começamos definindo uma classe que herda da classe PdfPageEventHelper para poder sobrescrever métodos que são chamados quando eventos específicos ocorrem durante o processo de geração de PDF.
A função OnEndPage é sobrescrita nesta classe para adicionar uma tabela que possui uma única célula contendo o número da página atual. Por fim, antes de fecharmos o documento, precisamos conectar uma instância da nossa classe PageNumberEventHandler ao objeto PdfWriter. Com essa configuração, a função PageNumberEventHandler da classe OnEndPage será chamada sempre que uma nova página for adicionada ao documento PDF, adicionando o número da página na parte inferior de cada página. Também podemos usar um documento PDF existente para adicionar números de página.

Conclusão
Em resumo, a especialização, a usabilidade e a integração perfeita do IronPDF com ambientes .NET o posicionam como a melhor opção para cenários que exigem conversão de HTML para PDF e funcionalidades relacionadas, embora o iTextSharp ainda seja um forte concorrente no mercado de bibliotecas de manipulação de PDF em C#. Com o IronPDF, você pode criar faturas, relatórios e documentos gerados dinamicamente a partir de conteúdo HTML com a facilidade, eficácia e adaptabilidade necessárias para ter sucesso no ambiente de desenvolvimento moderno.
A edição Lite do IronPDF inclui licença permanente, opções de atualização e um ano de manutenção do software. O período de teste com marca d'água permite que os usuários avaliem o produto em situações práticas. Visite a página de licença para obter mais detalhes. Acesse este site para saber mais sobre a Iron Software.
Perguntas frequentes
Como posso adicionar números de página a um PDF usando C#?
Você pode adicionar números de página a um PDF usando o IronPDF definindo conteúdo HTML com marcadores de posição para números de página e usando o método AddHtmlFooters para aplicá-lo como rodapé no seu PDF.
Quais são os benefícios de usar o IronPDF para manipulação de PDFs?
O IronPDF oferece recursos robustos do framework PDF.NET, com suporte para HTML5, JavaScript, CSS e conversões de imagem para PDF, facilitando a manipulação de PDFs com cabeçalhos e rodapés personalizados.
Como o iTextSharp se compara ao IronPDF na adição de números de página?
O iTextSharp usa a classe PdfPageEventHelper para lidar com números de página, enquanto o IronPDF oferece uma abordagem mais simples, permitindo que você defina rodapés HTML com espaços reservados para números de página.
Posso manipular arquivos PDF existentes para adicionar números de página?
Sim, usando o IronPDF, você pode adicionar números de página a arquivos PDF existentes, renderizando rodapés HTML com espaços reservados para números de página e mesclando-os com o documento original.
Qual é o método preferido para converter HTML em PDF?
O IronPDF é a opção preferida para conversão de HTML para PDF devido à sua integração perfeita com ambientes .NET e à sua capacidade de lidar com HTML5, JavaScript e CSS.
Quais são os passos de instalação para usar o IronPDF em um projeto C#?
Você pode instalar o IronPDF em um projeto C# usando o Gerenciador de Pacotes NuGet no Visual Studio, pesquisando por 'IronPDF' e adicionando-o ao seu projeto.
Como posso garantir que meus PDFs tenham números de página corretos usando C#?
Usando o IronPDF, garanta a precisão da numeração de páginas definindo um modelo HTML com marcadores de posição para os números de página e aplicando-o de forma consistente em todas as páginas do PDF.
Existem opções de licenciamento disponíveis para o IronPDF?
O IronPDF oferece uma edição 'Lite' com licença permanente, opções de atualização e um ano de manutenção do software, além de um período de avaliação com marca d'água.
Onde posso encontrar exemplos detalhados e documentação sobre como usar o IronPDF?
Documentação completa e exemplos de uso do IronPDF podem ser encontrados no site oficial: ironpdf.com.
O IronPDF é totalmente compatível com o .NET 10? Posso usar os recursos de numeração de páginas em um projeto .NET 10?
Sim, o IronPDF é compatível com o .NET 10 e todos os seus recursos — incluindo a numeração de páginas por meio de marcadores em cabeçalhos ou rodapés — funcionam perfeitamente em projetos .NET 10, sem necessidade de configurações especiais ou soluções alternativas.


