Como adicionar um sumário em C#
O IronPDF permite adicionar um índice a documentos PDF em C# definindo a propriedade TableOfContents, que gera automaticamente navegação hiperlinkada a partir de cabeçalhos HTML (h6) com números de página opcionais.
-
1Install IronPDF with NuGet Package Manager
-
2Copie e execute este trecho de código.
new ChromePdfRenderer { RenderingOptions = { CreateOutlineMaps = true, OutlineMapsFormat = TableOfContentsTypes.WithPageNumbers, FirstPageNumber = 1 } } .RenderHtmlFileAsPdf("myDocument.html") .SaveAs("withToc.pdf");C# -
3Implante para testar em seu ambiente de produção.
Comece a usar IronPDF em seu projeto hoje com uma avaliação gratuita
Fluxo de trabalho mínimo (5 etapas)
- Baixe a biblioteca C# para adicionar um índice.
- Prepare o HTML para ser convertido em PDF.
- Defina a propriedade TableOfContents para ativar o sumário.
- Escolha se deseja exibir os números de página ou não.
- Otimize a disposição do índice.
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 fornece um recurso para criar um índice com hyperlinks 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?
Use a propriedade TableOfContents para habilitar a criação de um índice no documento PDF de saída. Essa propriedade pode ser atribuída a um dos três TableOfContentsTypes, que são descritos a seguir:
None: Não criar um índiceBasic: Criar um índice sem números de páginaWithPageNumbers: Criar 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?
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")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");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")Qual é a aparência do PDF gerado?
O índice será criado com hyperlinks para cada um dos 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.
Merge no documento quebrará os hyperlinks do índice.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?
- Certifique-se de que o documento HTML tenha tags de cabeçalho adequadas (
h1atéh6). - 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>
- 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>
<!-- Table of Contents placeholder -->
<div id="ironpdf-toc"></div>
<!-- Page break after TOC -->
<div style="page-break-after: always;"></div>
<!-- Main content starts here -->
<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>
O IronSuite desempenha um papel crucial nas nossas operações. Estas são ferramentas que aumentam a eficiência no negócio, incluindo a criação de plantas baixas e melhoria na gestão de inventário.
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.
[{w:(Atualmente, não é recomendado sobrescrever as propriedades
page-break-beforeepage-break-afterao estilizar o índice, 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.
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")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 uma estilização diferente ao cabeçalho H1 no índice. Substitua h1 por h2 até h6 para mudar a estilização de cada cabeçalho respectivo.
#ironpdf-toc ul li.h1 {
font-style: italic;
font-weight: bold;
}

Como faço para alterar a família da fonte?
Com ambos os seletores '#ironpdf-toc li .title' e '#ironpdf-toc li .page', é possível sobrescrever a família de fontes do índice. 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;
}

Como controlar o recuo?
A indentação pode ser controlada usando o seletor :root. Este valor determina a quantidade de indentação para cada nível de cabeçalho (h1, h2, ...) no índice. Pode ser aumentado conforme necessário, ou pode não haver recuo algum, com um valor de 0.
:root {
--indent-length: 25px;
}

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 imagem de fundo 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;
}

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.
Can I specify where the table of contents should appear in my PDF using IronPDF?
Yes, you can specify a placeholder in your HTML using a div with the id `ironpdf-toc`. If not specified, IronPDF will automatically place the table of contents at the start of the document.
Does IronPDF support dynamic content like JavaScript when generating PDFs?
Yes, IronPDF supports dynamic content and can execute JavaScript during the conversion process, enhancing the interactivity of the generated PDF.
How can I download a sample HTML file to see how Table of Contents is structured?
You can download a sample HTML file directly from the IronPDF guide to understand how the table of contents is structured before converting it to a PDF.
What should I be cautious of when styling the table of contents in IronPDF?
When styling the table of contents, avoid modifying `page-break-before` and `page-break-after` properties within the TOC styling, as they may disrupt page number calculations in the PDF.

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.