Ir para o conteúdo do rodapé
USANDO O IRONPDF

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

  1. Crie um novo projeto em C# usando qualquer IDE.
  2. Crie um novo objeto PDF.
  3. Adicione os números de página ao rodapé HTML.
  4. Criar um PDF a partir de material HTML.
  5. 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:

Como adicionar números de página em PDF usando iTextSharp em C#: Figura 1 - Instalando o IronPDF a partir do gerenciador de pacotes

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
$vbLabelText   $csharpLabel

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.

Como adicionar números de página em PDF usando iTextSharp em C#: Figura 2 - IronPDF: PDF gerado com números de página

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
$vbLabelText   $csharpLabel

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.

Como adicionar números de página em PDF usando iTextSharp em C#: Figura 3 - iTextSharp: PDF gerado com 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.

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

Leia mais

Equipe de suporte de ferro

Estamos online 24 horas por dia, 5 dias por semana.
Bater papo
E-mail
Liga para mim