如何在 C# 中新增目錄

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 Icon立即開始使用 NuGet 建立 PDF 檔案:

  1. 使用 NuGet 套件管理器安裝 IronPDF

    PM > Install-Package IronPdf

  2. 複製並運行這段程式碼。

    new ChromePdfRenderer { RenderingOptions = { CreateOutlineMaps = true, OutlineMapsFormat = TableOfContentsTypes.WithPageNumbers, FirstPageNumber = 1 } }
        .RenderHtmlFileAsPdf("myDocument.html")
        .SaveAs("withToc.pdf");
  3. 部署到您的生產環境進行測試

    立即開始在您的專案中使用 IronPDF,免費試用!
    arrow pointer


新增目錄範例

使用TableOfContents屬性可以在輸出的 PDF 文件中建立目錄。 此屬性可以指派給以下三種TableOfContentsTypes之一:

  • 無:不建立目錄
  • 基本操作:建立不含頁碼的目錄
  • 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",即可變更每個標題的樣式。

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

字體系列

使用" #ironpdf-toc li .title "和" #ironpdf-toc li .page "選擇器,可以覆蓋目錄的字體系列。 為此,我們可以使用草書字體作為標題,並利用 @font-face 屬性來使用 Eduardo Tunni 設計的自訂" 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)。

:root {
    --indent-length: 25px;
}
設定自訂縮排

虛線

若要移除頁首標題和頁碼之間的虛線,請修改::after選擇器的背景影像。 在原始樣式中,第二個參數是"currentcolor 1px"。 將其變更為"透明 1px"即可去除點狀圖案。 指定其他屬性也很重要,因為在這個選擇器中,新的樣式將完全覆蓋舊的樣式,而不僅僅是對其進行添加。

 #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;
 }
移除點

準備好看看您還能做些什麼嗎? 請造訪我們的教學頁面:轉換 PDF 文件

常見問題解答

如何在.NET C#中為PDF添加目錄?

您可以使用 IronPDF 在 PDF 生成設置中通過設置 TableOfContents 屬性來為 PDF 添加目錄。這將自動創建一個與您 PDF 文檔中的標頭元素鏈接的導航索引。

IronPDF提供三種目錄選項:無(無目錄)、基礎版(無頁碼的目錄)以及附帶頁碼的目錄。

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

要將目錄放置在特定位置,請在您的HTML文件中插入ID為'ironpdf-toc'的
。IronPDF將會在此位置放置目錄。

要將目錄放置在特定位置,請在您的 HTML 文檔中插入一個 ID 為 'ironpdf-toc' 的 div。IronPDF 將在此位置放置目錄。

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

是否可以改變PDF中目錄的字體?

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

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

在創建目錄後使用Merge方法時,請確保更新或重新生成目錄以維持超連結的有效性,因為合併可能會中斷它們。

使用 Merge 方法合併目錄後,請確保更新或重新生成目錄以保持有效的超鏈接,因為合併可能會干擾它們。

避免修改CSS中的page-break-before和page-break-after屬性,因為這會干擾目錄中的頁碼計算。

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

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

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

通過使用':root' CSS選擇器來控制目錄中標題的縮排,這允許您為每個標題定義縮排級別。

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

目錄作為PDF文件中的導航工具,列出章節或章節及其頁碼,幫助用戶快速找到特定內容。

文章“如何在.NET C#中向PDF添加目錄 | IronPDF”提供了使用IronPDF庫將目錄(TOC)集成到PDF文件中的綜合指南。TOC作為PDF中的導航工具,列出章節或章節及其相應的頁碼,允許用戶輕鬆訪問特定內容。IronPDF通過允許開發人員創建與HTML標題元素(h1到h6)連接的超連結的TOC來簡化此過程。實施此功能的關鍵步驟包括下載必要的C#庫,準備HTML進行轉換,設置TableOfContents屬性,以及自訂TOC的外觀和放置位置。該屬性提供了三個選項:無,基本版(無頁碼)和附帶頁碼。該文章還涉及使用CSS設計TOC,討論標題設計,字體自訂,縮排和去除虛線。IronPDF庫確保TOC樣式不會干擾其他HTML內容樣式,並提供了可下載的資源,如範例HTML和CSS文件,以方便進程。該指南強調,文件合併可能會中斷TOC超連結,並建議避免修改某些CSS屬性以維持精確的頁碼計算。

IronPDF for .NET 在添加目录时是否与 .NET 10 完全兼容,有什么特殊的注意事项吗?

是的-IronPDF 與 .NET 10 完全相容,就像之前的 .NET 版本一樣。在 .NET 10 下新增目錄時,不需要任何特殊的設定變更;相同的 API 與屬性(例如 ChromePdfRenderOptions 上的 TableOfContents )開箱即用。只需確保您透過 NuGet for .NET 10 將 IronPDF 包含在專案中,並確保渲染引擎已啟用 JavaScript,即可成功執行 TOC 功能。

Chaknith Bin
軟體工程師
Chaknith 在 IronXL 和 IronBarcode 上工作。他對 C# 和 .NET 擁有深厚的專業知識,幫助改進了軟體並支持客戶。他從用戶互動中得到的見解有助於改善產品、文檔和整體體驗。
準備好開始了嗎?
Nuget 下載 16,493,056 | Version: 2025.11 剛發表