Como adicionar um sumário em C# | IronPDF

Como adicionar um sumário em C

This article was translated from English: Does it need improvement?
Translated
View the article in English

O IronPDF permite adicionar um sumário a documentos PDF em C# definindo a propriedade TableOfContents, que gera automaticamente navegação com hiperlinks a partir de cabeçalhos HTML (h1-h6) com números de página opcionais.

Início rápido: Adicionar sumário a um PDF em C#

  1. Instale IronPDF com o Gerenciador de Pacotes NuGet

    PM > Install-Package IronPdf
  2. Copie e execute este trecho de código.

    new ChromePdfRenderer { RenderingOptions = { CreateOutlineMaps = true, OutlineMapsFormat = TableOfContentsTypes.WithPageNumbers, FirstPageNumber = 1 } }
        .RenderHtmlFileAsPdf("myDocument.html")
        .SaveAs("withToc.pdf");
  3. Implante para testar em seu ambiente de produção.

    Comece a usar IronPDF em seu projeto hoje com uma avaliação gratuita

    arrow pointer


O que é um sumário em um PDF?

Um sumário (TOC) é um guia que ajuda os leitores a navegar pelo conteúdo do documento PDF. Geralmente aparece no início e lista as principais seções ou capítulos do PDF, juntamente com os números das páginas onde cada seção começa. Isso permite que os leitores encontrem e acessem rapidamente partes específicas do documento, facilitando o acesso às informações de que precisam.

O IronPDF oferece um recurso para criar um sumário com hiperlinks para os elementos 'h1', 'h2', 'h3', 'h4', 'h5' e 'h6'. O estilo padrão deste índice não entrará em conflito com outros estilos no conteúdo HTML. Ao criar novos PDFs usando o IronPDF, o recurso de sumário analisa automaticamente os cabeçalhos HTML e cria uma estrutura de navegação hierárquica que reflete a organização do documento.

O sumário gerado inclui links clicáveis ​​que permitem aos leitores acessar diretamente qualquer seção, tornando-o particularmente útil para documentos longos, relatórios e documentação técnica. A implementação de sumário do IronPDF preserva a estrutura semântica do seu HTML, ao mesmo tempo que oferece recursos profissionais de navegação em PDF.

Como adiciono um índice ao meu PDF?

Utilize a propriedade TableOfContents para habilitar a criação de um sumário no documento PDF de saída. Esta propriedade pode ser atribuída a uma das três TableOfContentsTypes, que são descritas a seguir:

  • None: Não criar um índice
  • Basic: Criar um índice sem números de página
  • WithPageNumbers: Crie um índice COM números de página

Esta funcionalidade utiliza JavaScript para construir o índice; Portanto, o mecanismo de busca deve ter o JavaScript habilitado. Ao converter arquivos HTML para PDF , o mecanismo JavaScript do IronPDF processa as tags de cabeçalho e gera a estrutura de navegação apropriada. Para entender melhor essa funcionalidade, baixe o arquivo HTML de exemplo abaixo:

Que código preciso para gerar o sumário?

:path=/static-assets/pdf/content-code-examples/how-to/table-of-contents.cs
using IronPdf;

// Instantiate Renderer
ChromePdfRenderer renderer = new ChromePdfRenderer();

// Configure render options
renderer.RenderingOptions = new ChromePdfRenderOptions
{
    // Enable table of content feature
    TableOfContents = TableOfContentsTypes.WithPageNumbers,
};

PdfDocument pdf = renderer.RenderHtmlFileAsPdf("tableOfContent.html");

pdf.SaveAs("tableOfContents.pdf");
Imports IronPdf

' Instantiate Renderer
Private renderer As New ChromePdfRenderer()

' Configure render options
renderer.RenderingOptions = New ChromePdfRenderOptions With {.TableOfContents = TableOfContentsTypes.WithPageNumbers}

Dim pdf As PdfDocument = renderer.RenderHtmlFileAsPdf("tableOfContent.html")

pdf.SaveAs("tableOfContents.pdf")
$vbLabelText   $csharpLabel

Para cenários mais avançados, você pode combinar o sumário com outras opções de renderização para criar documentos PDF abrangentes:

using IronPdf;

// Create renderer with multiple options
ChromePdfRenderer renderer = new ChromePdfRenderer();
renderer.RenderingOptions = new ChromePdfRenderOptions
{
    // Enable table of contents with page numbers
    TableOfContents = TableOfContentsTypes.WithPageNumbers,

    // Add margins for better formatting
    MarginTop = 40,
    MarginBottom = 40,

    // Enable JavaScript for dynamic content
    EnableJavaScript = true,

    // Set paper orientation
    PaperOrientation = PdfPaperOrientation.Portrait,

    // Add first page number offset
    FirstPageNumber = 1
};

 // Convert HTML with multiple header levels
string htmlContent = @"
<h1>Introduction</h1>
<p>Welcome to our comprehensive guide...</p>

<h2>Chapter 1: Getting Started</h2>
<p>Let's begin with the basics...</p>

<h3>1.1 Prerequisites</h3>
<p>Before we start, ensure you have...</p>

<h2>Chapter 2: Advanced Topics</h2>
<p>Now let's explore more complex features...</p>
";

PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("document-with-toc.pdf");
using IronPdf;

// Create renderer with multiple options
ChromePdfRenderer renderer = new ChromePdfRenderer();
renderer.RenderingOptions = new ChromePdfRenderOptions
{
    // Enable table of contents with page numbers
    TableOfContents = TableOfContentsTypes.WithPageNumbers,

    // Add margins for better formatting
    MarginTop = 40,
    MarginBottom = 40,

    // Enable JavaScript for dynamic content
    EnableJavaScript = true,

    // Set paper orientation
    PaperOrientation = PdfPaperOrientation.Portrait,

    // Add first page number offset
    FirstPageNumber = 1
};

 // Convert HTML with multiple header levels
string htmlContent = @"
<h1>Introduction</h1>
<p>Welcome to our comprehensive guide...</p>

<h2>Chapter 1: Getting Started</h2>
<p>Let's begin with the basics...</p>

<h3>1.1 Prerequisites</h3>
<p>Before we start, ensure you have...</p>

<h2>Chapter 2: Advanced Topics</h2>
<p>Now let's explore more complex features...</p>
";

PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("document-with-toc.pdf");
Imports IronPdf

' Create renderer with multiple options
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions = New ChromePdfRenderOptions With {
    ' Enable table of contents with page numbers
    .TableOfContents = TableOfContentsTypes.WithPageNumbers,

    ' Add margins for better formatting
    .MarginTop = 40,
    .MarginBottom = 40,

    ' Enable JavaScript for dynamic content
    .EnableJavaScript = True,

    ' Set paper orientation
    .PaperOrientation = PdfPaperOrientation.Portrait,

    ' Add first page number offset
    .FirstPageNumber = 1
}

' Convert HTML with multiple header levels
Dim htmlContent As String = "
<h1>Introduction</h1>
<p>Welcome to our comprehensive guide...</p>

<h2>Chapter 1: Getting Started</h2>
<p>Let's begin with the basics...</p>

<h3>1.1 Prerequisites</h3>
<p>Before we start, ensure you have...</p>

<h2>Chapter 2: Advanced Topics</h2>
<p>Now let's explore more complex features...</p>
"

Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(htmlContent)
pdf.SaveAs("document-with-toc.pdf")
$vbLabelText   $csharpLabel

Qual é a aparência do PDF gerado?

O sumário será criado com hiperlinks para cada um dos itens 'h1', 'h2', 'h3', 'h4', 'h5' e 'h6'. A estrutura hierárquica dos seus cabeçalhos é preservada, com os subtítulos devidamente recuados em relação às suas seções principais. Você também pode adicionar números de página ao seu PDF para auxiliar na navegação, juntamente com o sumário.

ObserveUsar o método Merge no documento quebrará os hiperlinks do sumário.

Ao trabalhar com PDFs mesclados ou divididos , gere o sumário após a conclusão de toda a montagem do documento para garantir referências de página precisas e hiperlinks funcionais.


Onde devo colocar o sumário no meu PDF?

  1. Certifique-se de que o documento HTML tenha tags de cabeçalho adequadas (h1 até h6).
  2. Opcionalmente, insira uma div no local onde deseja que o Sumário apareça. Caso a div abaixo não seja fornecida, o IronPDF inserirá o Sumário no início.
<div id="ironpdf-toc"></div>
<div id="ironpdf-toc"></div>
HTML
  1. Nas opções de renderização, escolha se deseja exibir o sumário com ou sem números de página.

Para documentos com layouts complexos, combine o sumário com cabeçalhos e rodapés para criar uma estrutura de documento profissional. Aqui está um exemplo de estrutura HTML adequada para a geração ideal de um sumário:

<!DOCTYPE html>
<html>
<head>
    <title>My Document</title>
</head>
<body>

    <div id="ironpdf-toc"></div>

    <div style="page-break-after: always;"></div>

    <h1>Executive Summary</h1>
    <p>This document provides...</p>

    <h2>Market Analysis</h2>
    <h3>Current Trends</h3>
    <p>The market shows...</p>

    <h3>Future Projections</h3>
    <p>We anticipate...</p>

    <h2>Recommendations</h2>
    <p>Based on our analysis...</p>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
    <title>My Document</title>
</head>
<body>

    <div id="ironpdf-toc"></div>

    <div style="page-break-after: always;"></div>

    <h1>Executive Summary</h1>
    <p>This document provides...</p>

    <h2>Market Analysis</h2>
    <h3>Current Trends</h3>
    <p>The market shows...</p>

    <h3>Future Projections</h3>
    <p>We anticipate...</p>

    <h2>Recommendations</h2>
    <p>Based on our analysis...</p>
</body>
</html>
HTML

Como formatar o sumário?

O sumário pode ser estilizado usando CSS, selecionando os diversos seletores CSS que definem o estilo do sumário. Ao gerenciar as fontes em seu PDF, o sumário herdará as configurações de fonte do documento por padrão, mas pode ser personalizado independentemente.

Além disso, modificações de estilo podem ser feitas usando a propriedade CustomCssUrl. Comece baixando um arquivo CSS que contém o estilo original do sumário abaixo.

AvisoAtualmente, não é recomendável sobrescrever as propriedades page-break-before e page-break-after ao estilizar o sumário, pois isso quebrará os cálculos de número de página. A implementação atual espera que o Sumário esteja em páginas separadas do restante do conteúdo do documento.

:path=/static-assets/pdf/content-code-examples/how-to/table-of-contents-overwrite-styling.cs
using IronPdf;
using System.IO;

// Instantiate Renderer
ChromePdfRenderer renderer = new ChromePdfRenderer();

// Configure render options
renderer.RenderingOptions = new ChromePdfRenderOptions
{
    // Enable table of content feature
    TableOfContents = TableOfContentsTypes.WithPageNumbers,
    CustomCssUrl = "./custom.css"
};

// Read HTML text from file
string html = File.ReadAllText("tableOfContent.html");
PdfDocument pdf = renderer.RenderHtmlAsPdf(html);

pdf.SaveAs("tableOfContents.pdf");
Imports IronPdf
Imports System.IO

' Instantiate Renderer
Private renderer As New ChromePdfRenderer()

' Configure render options
renderer.RenderingOptions = New ChromePdfRenderOptions With {
	.TableOfContents = TableOfContentsTypes.WithPageNumbers,
	.CustomCssUrl = "./custom.css"
}

' Read HTML text from file
Dim html As String = File.ReadAllText("tableOfContent.html")
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(html)

pdf.SaveAs("tableOfContents.pdf")
$vbLabelText   $csharpLabel

Ao trabalhar com tamanhos de papel personalizados , pode ser necessário ajustar o estilo do sumário para acomodar diferentes dimensões de página e garantir o fluxo de texto e a paginação adequados.

Como estilizar diferentes níveis de cabeçalho?

Use o seletor '#ironpdf-toc ul li.h1' para aplicar um estilo diferente ao cabeçalho H1 no sumário. Substitua 'h1' por 'h2' até 'h6' para alterar o estilo de cada cabeçalho respectivo.

 #ironpdf-toc ul li.h1 {
    font-style: italic;
    font-weight: bold;
 }
Sumário estilizado com linhas pontilhadas conectando capítulos e seções hierárquicas aos números de página.

Como faço para alterar a família da fonte?

Com os seletores '#ironpdf-toc li .title' e '#ironpdf-toc li .page', é possível sobrescrever a família de fontes do sumário. Para isso, use a fonte cursiva para o título e utilize o atributo @font-face para usar a fonte personalizada ' Lemon ', criada por Eduardo Tunni.

 #ironpdf-toc li .title {
    order: 1;
    font-family: cursive;
 }

 @font-face {
    font-family: 'lemon';
    src: url('Lemon-Regular.ttf')
 }

 #ironpdf-toc li .page {
    order: 3;
    font-family: 'lemon', sans-serif;
 }
Sumário com capítulos, seções e lições, mostrando linhas pontilhadas e números de página alinhados à direita.

Como controlar o recuo?

O recuo pode ser controlado usando o seletor :root. Esse valor determina o recuo de cada nível de cabeçalho (h1, h2, ...) no sumário. Pode ser aumentado conforme necessário, ou pode não haver recuo algum, com um valor de 0.

:root {
    --indent-length: 25px;
}
Sumário com capítulos, seções e lições com recuo personalizado, indicando as páginas com linhas pontilhadas como referência.

Como faço para remover ou personalizar as linhas pontilhadas?

Para remover as linhas pontilhadas entre o título do cabeçalho e o número da página, modifique a propriedade background-image do seletor ::after. No estilo original, o segundo parâmetro é "currentcolor 1px". Altere para "transparente 1px" para remover os pontos. É importante especificar também outros atributos, pois, neste seletor, o novo estilo substituirá completamente o estilo antigo, em vez de apenas complementá-lo.

 #ironpdf-toc li::after {
    background-image: radial-gradient(circle, transparent 1px, transparent 1.5px);
    background-position: bottom;
    background-size: 1ex 4.5px;
    background-repeat: space no-repeat;
    content: "";
    flex-grow: 1;
    height: 1em;
    order: 2;
 }
Sumário com capítulos, seções e lições, mostrando recuo hierárquico e números de página alinhados à direita.

Para opções de estilo mais avançadas, crie linhas de chamada personalizadas usando diferentes padrões:

/* Dashed line leader */
#ironpdf-toc li::after {
    background-image: linear-gradient(to right, currentcolor 50%, transparent 50%);
    background-size: 8px 1px;
    background-repeat: repeat-x;
    background-position: bottom;
}

/* Solid line leader */
#ironpdf-toc li::after {
    border-bottom: 1px solid currentcolor;
    background: none;
}

Pronto para ver o que mais você pode fazer? Confira nossa página de tutoriais aqui: Converter PDFs

Perguntas frequentes

Como adiciono um índice ao meu documento PDF?

Você pode adicionar um sumário ao seu PDF usando o IronPDF definindo a propriedade `TableOfContents` no `ChromePdfRenderer`. Basta definir `RenderingOptions.TableOfContents` como `TableOfContentsTypes.Basic` para um sumário sem números de página ou como `TableOfContentsTypes.WithPageNumbers` para incluir números de página. O IronPDF gerará automaticamente o sumário a partir dos seus cabeçalhos HTML (tags `h1` a `h6`).

Quais elementos HTML são usados para gerar o sumário?

O IronPDF cria automaticamente o sumário, analisando e utilizando os elementos de cabeçalho h1, h2, h3, h4, h5 e h6 do seu HTML. Esses cabeçalhos formam uma estrutura de navegação hierárquica que reflete a organização do seu documento, com cada cabeçalho se tornando um hiperlink clicável no sumário do PDF gerado.

Posso incluir números de página no sumário?

Sim, o IronPDF oferece duas opções de sumário: `TableOfContentsTypes.Basic` cria um sumário sem números de página, enquanto `TableOfContentsTypes.WithPageNumbers` inclui números de página para cada seção. Você pode escolher a opção que melhor se adapta às necessidades do seu documento ao configurar as opções de renderização (`RenderingOptions`).

O recurso de sumário requer JavaScript?

Sim, o IronPDF usa JavaScript para gerar o sumário, portanto, o mecanismo de renderização precisa ter o JavaScript habilitado. Normalmente, ele já vem habilitado por padrão, mas se você desabilitou o JavaScript nas opções de renderização, precisará habilitá-lo para que o recurso de sumário funcione corretamente.

Como faço para configurar o sumário com números de página em uma única linha de código?

Você pode gerar um PDF com um sumário incluindo números de página usando esta única linha: `new ChromePdfRenderer { RenderingOptions = { TableOfContents = TableOfContentsTypes.WithPageNumbers, FirstPageNumber = 1 } }.RenderHtmlFileAsPdf("myDocument.html").SaveAs("withToc.pdf");` Isso cria um sumário totalmente funcional com navegação por hiperlinks e números de página.

O estilo do sumário entrará em conflito com meus estilos HTML existentes?

Não, o estilo padrão do sumário do IronPDF foi projetado para não entrar em conflito com outros estilos no seu conteúdo HTML. O sumário gerado mantém seu próprio estilo, garantindo a exibição correta e preservando a aparência do conteúdo existente no documento.

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
Pronto para começar?
Nuget Downloads 18,318,263 | Versão: 2026.4 acaba de ser lançado
Still Scrolling Icon

Ainda está rolando a tela?

Quer provas rápidas? PM > Install-Package IronPdf
executar um exemplo Veja seu HTML se transformar em um PDF.