How to Add Table of Contents

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

A table of contents (TOC) is like a roadmap that helps readers navigate through the PDF document's contents. It typically appears at the beginning and lists the main sections or chapters of the PDF, along with the page numbers where each section begins. This allows readers to quickly find and jump to specific parts of the document, making it easier to access the information they need.

IronPDF provides a feature to create a table of contents with hyperlinks to the 'h1', 'h2', 'h3', 'h4', 'h5', and 'h6' elements. The default styling of this table of contents will not conflict with other styles in the HTML content.

Nuget IconGet started making PDFs with NuGet now:

  1. Install IronPDF with NuGet Package Manager

    PM > Install-Package IronPdf

  2. Copy and run this code snippet.

    new ChromePdfRenderer { RenderingOptions = { CreateOutlineMaps = true, OutlineMapsFormat = TableOfContentsTypes.WithPageNumbers, FirstPageNumber = 1 } }
        .RenderHtmlFileAsPdf("myDocument.html")
        .SaveAs("withToc.pdf");
  3. Deploy to test on your live environment

    Start using IronPDF in your project today with a free trial
    arrow pointer


Add Table of Contents Example

Use the TableOfContents property to enable the creation of a table of contents in the output PDF document. This property can be assigned to one of three TableOfContentsTypes, which are described as follows:

  • None: Do not create a table of contents
  • Basic: Create a table of contents without page numbers
  • WithPageNumbers: Create a table of contents WITH page numbers

This feature uses JavaScript to build the table of contents; therefore, the engine must have JavaScript enabled. To understand this feature better, you can download the sample HTML file below:

Code

: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

Output PDF

The table of contents will be created with hyperlinks to each of the 'h1', 'h2', 'h3', 'h4', 'h5', and 'h6'.

Por favor notaUsing the Merge method on the document will break the hyperlinks of the table of contents.


Table of Contents Placement on the PDF

  1. Ensure that the HTML document has proper header tags (h1 up to h6).
  2. Optionally insert a div for where you want the Table of Contents to appear. If the below div is not provided, IronPDF will insert the Table of Contents at the start.
<div id="ironpdf-toc"></div>
<div id="ironpdf-toc"></div>
HTML
  1. In the render options, choose to render the table of contents either with or without page numbers.

Styling the Table of Contents

The Table of Contents can be styled using CSS by targeting the various CSS selectors that define the style of the Table of Contents.

In addition, styling modifications can be done using the CustomCssUrl property. Let's begin by downloading a CSS file that contains the original styling for the table of contents below.

AdvertenciaCurrently, it's not recommended to overwrite the page-break-before and page-break-after properties when styling the table of contents, as this will break page number calculations. The current implementation expects the Table of Contents to be on separate pages from other document content.

: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

Style Headers

Use the '#ironpdf-toc ul li.h1' selector to apply different styling to the H1 header in the table of contents. Replace 'h1' with 'h2' up to 'h6' to change the styling for each respective header.

 #ironpdf-toc ul li.h1 {
    font-style: italic;
    font-weight: bold;
 }
Style headers

Font Family

With both the '#ironpdf-toc li .title' and '#ironpdf-toc li .page' selectors, it is possible to overwrite the font family of the table of contents. To do this, we can use the cursive font for the title and utilize the @font-face attribute to use the custom 'Lemon' font designed by 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;
 }
Set custom font family

Indentation

Indentation can be controlled using the ':root' selector. This value determines the amount of indent for each header level (h1, h2, ...) in the table of contents. It can be increased as needed, or there can be no indentation with a value of 0.

:root {
    --indent-length: 25px;
}
Set custom indentation

Dot Line

To remove the dotted lines between the header title and page number, modify the background-image of the ::after selector. In the original styling, the second parameter is "currentcolor 1px". Change it to "transparent 1px" to remove the dots. It is important to specify other attributes as well because, in this selector, the new styling will completely override the old styling rather than just adding to it.

 #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;
 }
Remove dots

Ready to see what else you can do? Check out our tutorial page here: Convert PDFs

Preguntas Frecuentes

¿Cómo puedo añadir un índice de contenidos a un PDF en .NET C#?

Puedes usar IronPDF para añadir un índice de contenidos a un PDF configurando la propiedad TableOfContents en tus ajustes de generación de PDF. Esto creará automáticamente un índice de navegación vinculado a los elementos de encabezado en tu documento PDF.

¿Qué opciones están disponibles para el índice de contenidos en IronPDF?

IronPDF proporciona tres opciones para el índice de contenidos: Ninguno (sin TOC), Básico (TOC sin números de página) y ConNúmerosDePágina (TOC que incluye números de página).

¿Cómo puedo asegurarme de que el índice de contenidos aparezca en una ubicación específica en el PDF?

Para colocar el índice de contenidos en una ubicación específica, inserta un div con el ID 'ironpdf-toc' en tu documento HTML. IronPDF colocará el TOC en esta ubicación.

¿Puedo estilizar el índice de contenidos usando CSS?

Sí, IronPDF te permite estilizar el índice de contenidos usando CSS. Puedes orientar elementos específicos del TOC para modificar su apariencia y usar una URL de CSS personalizada para un estilo adicional.

¿Es posible cambiar la fuente del índice de contenidos en un PDF?

Puedes cambiar la fuente del índice de contenidos utilizando los selectores CSS #ironpdf-toc li .title y #ironpdf-toc li .page. Las fuentes personalizadas pueden implementarse utilizando el atributo @font-face.

¿Cómo evito que los hipervínculos del TOC se rompan al fusionar documentos PDF?

Al usar el método Merge después de crear un TOC, asegúrate de actualizar o regenerar el TOC para mantener los hipervínculos funcionando, ya que la fusión puede interrumpirlos.

¿De qué debo tener cuidado al estilizar el índice de contenidos en relación con los saltos de página?

Evita alterar las propiedades page-break-before y page-break-after en tu CSS, ya que esto puede interferir con el cálculo de números de página en el TOC.

¿Cómo puedo eliminar las líneas punteadas entre títulos y números de página en el TOC?

Para eliminar las líneas punteadas entre títulos y números de página, modifica el CSS para el selector '::after' de los elementos del TOC, estableciendo la propiedad background-image en 'transparent 1px'.

¿Cómo puedo controlar la indentación de los encabezados en el índice de contenidos?

Controla la indentación de los encabezados en el TOC usando el selector CSS ':root', que te permite definir el nivel de sangría para cada encabezado.

¿Cuál es el papel de un índice de contenidos en un documento PDF?

Un índice de contenidos sirve como una herramienta de navegación dentro de un documento PDF, enlistando secciones o capítulos y sus números de página para ayudar a los usuarios a localizar rápidamente contenido específico.

¿IronPDF es totalmente compatible con .NET 10 al agregar una tabla de contenido? ¿Hay alguna consideración especial que deba tenerse en cuenta?

Sí, IronPDF es totalmente compatible con .NET 10, al igual que con versiones anteriores de .NET. Al agregar una tabla de contenido en .NET 10, no se requieren cambios de configuración especiales; las mismas API y propiedades (como TableOfContents en ChromePdfRenderOptions ) funcionan de inmediato. Solo asegúrese de incluir IronPDF en su proyecto mediante NuGet para .NET 10 y de que el motor de renderizado tenga JavaScript habilitado para que la funcionalidad de la tabla de contenido funcione correctamente.

Chaknith Bin
Ingeniero de Software
Chaknith trabaja en IronXL e IronBarcode. Tiene un profundo conocimiento en C# y .NET, ayudando a mejorar el software y apoyar a los clientes. Sus conocimientos derivados de las interacciones con los usuarios contribuyen a mejores productos, documentación y experiencia en general.
¿Listo para empezar?
Nuget Descargas 16,154,058 | Versión: 2025.11 recién lanzado