How to Add Table of Contents

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

目錄(TOC)就像是一張幫助讀者瀏覽 PDF 文件內容的路線圖。 它通常出現在開頭,列出 PDF 的主要部分或章節,以及每個部分開始的頁碼。 這允許讀者快速找到和跳轉到文件的特定部分,更容易獲得所需信息。

IronPDF 提供了一項功能,能夠創建帶有鏈接到 'h1'、'h2'、'h3'、'h4'、'h5' 和 'h6' 元素的目錄。 此目錄的默認樣式不會與 HTML 內容中的其他樣式衝突。

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
class="hsg-featured-snippet">

簡化工作流程(5 步驟)

  1. 下載 C# 庫以添加目錄
  2. 準備要轉換為 PDF 的 HTML
  3. 設置 TableOfContents 屬性以啟用目錄
  4. 通過選擇是否顯示頁碼來自定義目錄
  5. 優化輸出 PDF 上目錄的位置


添加目錄示例

使用 TableOfContents 屬性啟用在輸出 PDF 文件中創建目錄。 此屬性可以分配為三種 TableOfContentsTypes 之一,其描述如下:

  • None: 不創建目錄
  • Basic: 創建不帶頁碼的目錄
  • WithPageNumbers: 創建帶有頁碼的目錄

此功能使用 JavaScript 來構建目錄; 因此,必須啟用引擎的 JavaScript。 為了更好地理解本功能,您可以下載下面的示例 HTML 文件:

代码

: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

輸出PDF

目錄將帶有鏈接到每一個 'h1'、'h2'、'h3'、'h4'、'h5' 和 'h6'。

請注意在文檔上使用 Merge 方法將破壞目錄的鏈接。


PDF 上的目錄位置

  1. 確保 HTML 文檔有正確的標題標籤(h1 到 h6)。
  2. 可選地 插入一個 div 作為目錄出現的位置。 如果未提供以下 div,IronPDF 將在開始處插入目錄。
<div id="ironpdf-toc"></div>
<div id="ironpdf-toc"></div>
HTML
  1. 在渲染選項中,選擇渲染目錄是否帶有頁碼。

目錄的樣式

目錄可以使用 CSS 針對定義目錄樣式的各種 CSS 選擇器進行樣式化。

此外,還可以使用 CustomCssUrl 屬性進行樣式修改。 讓我們從下載下面包含目錄原始樣式的 CSS 文件開始。

警告目前,不建議在為目錄設置樣式時覆蓋 page-break-beforepage-break-after 屬性,因為這會破壞頁碼計算。 目前的實現預期目錄在與其他文檔內容分開的頁面上。
### 樣式標題

: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

使用 '#ironpdf-toc ul li.h1' 選擇器對目錄中的 H1 標題應用不同樣式。

將 'h1' 替換為 'h2' 到 'h6',以更改每個相應標題的樣式。

class="content-img-align-center">

class="center-image-wrapper"> ![樣式標題](/static-assets/pdf/how-to/table-of-contents/style-headers.webp)

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

字體系列

通過 '#ironpdf-toc li .title' 和 '#ironpdf-toc li .page' 選擇器,可以覆蓋目錄的字體系列。

為此,我們可以對標題使用草書字體,並使用 @font-face 屬性來使用由 Eduardo Tunni 設計的自定義 'Lemon' 字體。 - 下載 Lemon 字體

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

縮排

可以使用 ':root' 選擇器來控制縮排。

此值決定目錄中每個標題級別(h1、h2、...)的縮進量。 可以根據需要增加,或者使用值 0 則無縮進。

class="content-img-align-center">

class="center-image-wrapper"> ![設置自定義縮排](/static-assets/pdf/how-to/table-of-contents/indentation.webp)

:root {
    --indent-length: 25px;
}

點線

要移除標題和頁碼之間的虛線,修改 ::after 選擇器的背景圖像。

在原始樣式中,第二個參數為“currentcolor 1px”。 將其更改為“transparent 1px”以去除點線。 重要的是還需指定其他屬性,因為在此選擇器中,新樣式會完全覆蓋舊樣式,而不只是添加到其上。

class="content-img-align-center">

class="center-image-wrapper"> ![去除虛線](/static-assets/pdf/how-to/table-of-contents/dot-line.webp)

 #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

準備看看您還能做哪些其他事情嗎? 在這裡查看我們的教程頁面:轉換PDF

常見問題解答

如何在.NET C#中為PDF新增目錄?

您可以使用 IronPDF 在 PDF 產生設定中設定TableOfContents屬性,為 PDF 新增目錄。這將自動建立一個連結到 PDF 文件中頁眉元素的導覽索引。

IronPDF中目錄有哪些選項?

IronPDF 提供三種目錄選項:無(無目錄)、基本(無頁碼的目錄)和帶有頁碼(包含頁碼的目錄)。

如何確保目錄出現在 PDF 檔案中的特定位置?

若要將目錄放置在特定位置,請在 HTML 文件中插入 ID 為「ironpdf-toc」的div 。 IronPDF 會將目錄放置在該位置。

我可以使用 CSS 設定目錄樣式嗎?

是的,IronPDF 允許您使用 CSS 自訂目錄樣式。您可以針對特定的目錄元素修改其外觀,並使用自訂 CSS URL 進行額外樣式設定。

是否可以更改PDF文件中目錄的字體?

您可以使用 CSS 選擇器#ironpdf-toc li .title#ironpdf-toc li .page來更改目錄的字體。自訂字體可以使用@font-face屬性來實現。

如何防止合併 PDF 文件時目錄超連結失效?

使用Merge方法建立目錄後,請確保更新或重新產生目錄以保持超連結有效,因為合併可能會破壞超連結。

在設定目錄的分頁符號樣式時,我應該注意哪些方面?

避免更改 CSS 中的page-break-beforepage-break-after屬性,因為這可能會幹擾目錄中的頁碼計算。

如何刪除目錄中標題和頁碼之間的虛線?

若要移除標題和頁碼之間的虛線,請修改目錄項目的「::after」選擇器的 CSS,將background-image屬性設為「transparent 1px」。

如何控制目錄中標題的縮排?

使用“:root”CSS選擇器控制目錄中標題的縮進,該選擇器可讓您為每個標題定義縮排等級。

PDF文件中目錄的作用是什麼?

目錄是 PDF 文件中的導覽工具,列出章節及其頁碼,幫助使用者快速找到特定內容。

IronPDF 新增目錄時是否完全相容於 .NET 10?是否有任何特殊注意事項?

是的,IronPDF 與 .NET 10 完全相容,就像它與先前的 .NET 版本一樣。在 .NET 10 下新增目錄時,無需任何特殊配置變更;相同的 API 和屬性(例如ChromePdfRenderOptions中的TableOfContents )開箱即用。只需確保透過 NuGet 將 IronPDF 新增至您的 .NET 10 專案中,並確保渲染引擎已啟用 JavaScript,目錄功能即可正常運作。

A PHP Error was encountered

Severity: Warning

Message: Illegal string offset 'name'

Filename: sections/author_component.php

Line Number: 18

Backtrace:

File: /var/www/ironpdf.com/application/views/main/sections/author_component.php
Line: 18
Function: _error_handler

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 63
Function: view

File: /var/www/ironpdf.com/application/views/products/sections/three_column_docs_page_structure.php
Line: 64
Function: main_view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/views/products/how-to/index.php
Line: 2
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 552
Function: view

File: /var/www/ironpdf.com/application/controllers/Products/Howto.php
Line: 31
Function: render_products_view

File: /var/www/ironpdf.com/index.php
Line: 292
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: Illegal string offset 'title'

Filename: sections/author_component.php

Line Number: 38

Backtrace:

File: /var/www/ironpdf.com/application/views/main/sections/author_component.php
Line: 38
Function: _error_handler

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 63
Function: view

File: /var/www/ironpdf.com/application/views/products/sections/three_column_docs_page_structure.php
Line: 64
Function: main_view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/views/products/how-to/index.php
Line: 2
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 552
Function: view

File: /var/www/ironpdf.com/application/controllers/Products/Howto.php
Line: 31
Function: render_products_view

File: /var/www/ironpdf.com/index.php
Line: 292
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: Illegal string offset 'comment'

Filename: sections/author_component.php

Line Number: 48

Backtrace:

File: /var/www/ironpdf.com/application/views/main/sections/author_component.php
Line: 48
Function: _error_handler

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 63
Function: view

File: /var/www/ironpdf.com/application/views/products/sections/three_column_docs_page_structure.php
Line: 64
Function: main_view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/views/products/how-to/index.php
Line: 2
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 552
Function: view

File: /var/www/ironpdf.com/application/controllers/Products/Howto.php
Line: 31
Function: render_products_view

File: /var/www/ironpdf.com/index.php
Line: 292
Function: require_once

準備好開始了嗎?
Nuget 下載 16,154,058 | 版本: 2025.11 剛剛發布