IRONSOFTWAREHOME

如何在C#中新增目錄

Curtis Chau
Curtis Chau
Updated: 2026年9月5日

IronPDF可讓您在C#中的PDF文件中新增目錄,方法是設置h6)生成超連結導航,並可選擇顯示頁碼。

快速入門:在C#中為PDF新增目錄
  1. 1Install IronPDF with NuGet Package Manager

    PM > Install-Package IronPdf

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

    new ChromePdfRenderer { RenderingOptions = { CreateOutlineMaps = true, OutlineMapsFormat = TableOfContentsTypes.WithPageNumbers, FirstPageNumber = 1 } }
        .RenderHtmlFileAsPdf("myDocument.html")
        .SaveAs("withToc.pdf");
    C#
  3. 3部署以在您的實時環境中測試

    今天就開始在您的專案中使用IronPDF,透過免費試用
    arrow pointer

PDF中的目錄是什麼?

目錄(TOC)是一個路線圖,幫助讀者導航PDF文件的內容。 它通常出現在開頭,列出PDF的主要部分或章節,並附上每個部分開始的頁碼。 這使得讀者能夠快速找到並跳轉至文件的特定部分,方便他們獲取所需資訊。

IronPDF提供了一個功能,可以通過h6元素建立帶有超連結的目錄。 此目錄的預設樣式不會與HTML內容中的其他樣式衝突。 當您使用IronPDF建立新的PDF時,目錄功能會自動掃描您的HTML標題並建立符合您文件結構的層次導航。

生成的目錄包含可點擊的連結,允許讀者直接跳至任何部分,對於長文件、報告和技術文件特別有用。 IronPDF的目錄實現保留了您HTML的語義結構,並提供專業的PDF導航功能。

如何將目錄新增至我的PDF?

使用TableOfContents屬性在輸出PDF文件中啟用目錄的建立。 該屬性可以指定為三個TableOfContentsTypes之一,描述如下:

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

此功能使用JavaScript建立目錄; 因此,這引擎必須啟用JavaScript。 將HTML文件轉換為PDF時,IronPDF的JavaScript引擎會處理您的標題標籤並生成對應的導航結構。 為了更好地理解此功能,請下載以下範例HTML文件:

生成目錄需要哪些程式碼?

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");

在更高級的方案中,您可以將目錄與其他呈現選項結合起來建立綜合的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");

生成的PDF什麼樣子?

目錄將會建立,並帶有指向每個h6的超連結。 您的標題層次結構將被保留,並且每個子標題將正確縮進於其父節下。 您還可以新增頁數至您的PDF,以在目錄旁提供附加的導航支持。

Merge方法將破壞目錄的超連結。

在處理合併或拆分的PDF時,請在完成所有文件組裝後生成目錄,以確保準確的頁面引用和功能性超連結。


我應該將目錄放在PDF的什麼位置?

  1. 確保HTML文件具有正確的標頭標籤(h6)。
  2. 可選地插入一個div以決定目錄顯示的位置。 如果未提供以下div,IronPDF將在開始處插入目錄。
<div id="ironpdf-toc"></div>
HTML
  1. 在渲染選項中,選擇要顯示帶有或不帶頁碼的目錄渲染。

對於具有複雜佈局的文件,將目錄與頁眉和頁腳結合起來,以建立專業的文件結構。 這是最佳目錄生成的正確HTML結構範例:

<!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>
HTML

我最喜歡的程式庫是IronPDF。它允許快速高效地操作PDF文件。它還有許多有價值的功能,例如導出到PDF/A格式和數位簽署PDF文件。

Milan Jovanovic

Microsoft MVP

查看案例研究

IronOCR意味著我們每年可以從手動處理中節省$40,000,同時提高生產力,釋放資源以進行高影響的任務。我會強烈推薦它。

Brent Matzelle

首席技術官,OPYN

查看案例研究

IronSuite在我們的運營中扮演著至關重要的角色。這些工具增加了包括建立平面圖和改善庫存管理在內的業務效率。

David Jones

首席軟體工程師,Agorus Build

查看案例研究

如何設計目錄的樣式?

可以使用CSS來設計目錄的樣式,通過目標不同的CSS選擇器來定義目錄的樣式。 在您的PDF中管理字體時,目錄將會繼承您文件的字體設置,預設情況下如此,但也可以獨立定制。

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

警告: 目前,不建議在設計目錄樣式時覆蓋page-break-after屬性,因為這會破壞頁碼計算。 當前實現預期目錄應位於其他文件內容的單獨頁面上。
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");

當處理自訂紙張尺寸時,您可能需要調整目錄樣式以符合不同頁面尺寸,並確保正確的文字流和頁面分隔。

如何設計不同的標頭級別?

使用#IronPDF-toc ul li.h1選擇器為目錄中的H1標頭應用不同的樣式。 將h6,為各自的標頭更改樣式。

 #ironpdf-toc ul li.h1 {
    font-style: italic;
    font-weight: bold;
 }
Text
設計好的目錄上,階層章節和部分顯示帶點引導線的頁碼

如何更改字體系列?

使用'#ironpdf-toc li .page'選擇器,可以覆蓋目錄的字體系列。 為此,使用斜體字體作為標題,並利用@font-face屬性使用由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;
 }
Text
目錄,顯示章節、部分和課程帶點引導線和右對齊的頁碼

如何控制縮排?

可以使用:root選擇器來控制縮排。 此值決定目錄中每個標頭級別(h2、...)的縮進量。 可以根據需要增加縮排量,或將縮排值設為0時無縮入。

:root {
    --indent-length: 25px;
}
Text
目錄顯示自訂縮排的章節、部分和課程,帶點引導線連接到頁碼

如何移除或自訂點線?

要移除標題和頁碼之間的點線,請修改::after選擇器的背景圖片。 在原始樣式中,第二個參數是'currentcolor 1px'。 將其更改為'transparent 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;
 }
Text
目錄,顯示帶階層縮排的章節、部分和課程,以及右對齊的頁碼

若要更高級的樣式選項,使用不同的樣式圖案建立自訂引導線:

/* 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;
}
Text

準備好瞭解您還可以做什麼嗎? 在這裡查看我們的教程頁面:轉換PDFs

常見問題

如何在我的PDF文件中新增目錄?

您可以使用IronPDF在PDF中新增目錄,通過在ChromePdfRenderer中設置TableOfContents屬性。只需將RenderingOptions.TableOfContents設置為TableOfContentsTypes.Basic以獲取無頁碼的目錄,或TableOfContentsTypes.WithPageNumbers以包含頁碼。IronPDF將自動從您的HTML標題(h1-h6標籤)生成目錄。

用於生成目錄的HTML元素有哪些?

IronPDF通過掃描並使用您的HTML中的h1,h2,h3,h4,h5,h6標題元素來自動建立目錄。這些標題形成一個層次導航結構,反映了您文件的組織,並在生成的PDF目錄中成為可點擊的超連結。

我可以在目錄中包含頁碼嗎?

是的,IronPDF提供兩個目錄選項:TableOfContentsTypes.Basic建立不帶頁碼的目錄,而TableOfContentsTypes.WithPageNumbers為每個部分包括頁碼。您可以選擇最適合您的文件需求的選項,當設置RenderingOptions時。

目錄功能是否需要JavaScript?

是的,IronPDF使用JavaScript來構建目錄,因此渲染引擎必須啟用JavaScript。這通常是預設啟用的,但如果您在渲染選項中禁用了JavaScript,則需要啟用它才能正常使用目錄功能。

如何在一行程式碼中設置帶有頁碼的目錄?

您可以使用這一行生成一個包含頁碼的目錄PDF:new ChromePdfRenderer { RenderingOptions = { TableOfContents = TableOfContentsTypes.WithPageNumbers, FirstPageNumber = 1 } }.RenderHtmlFileAsPdf("myDocument.html").SaveAs("withToc.pdf"); 這樣會建立一個功能齊全的帶有超連結導航和頁碼的目錄。

目錄的樣式會與我現有的HTML樣式衝突嗎?

不,IronPDF的預設目錄樣式設計成不會與您HTML內容中的其他樣式衝突。生成的目錄維持其獨立樣式,確保在顯示時正確顯示,同時保留現有文件內容的外觀。

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
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

...
閱讀更多

準備開始了嗎?

Nuget Downloads 21,105,021版本:2026.9剛剛發布

立即獲取免費

立即獲取 30天試用金鑰。

bullet_checked無需信用卡或註冊帳號
bullet_test在生產
環境中進行測試,且不顯示浮水印
bullet_calendar30 天全
功能產品
bullet_support試用期間提供 24/5 技術
支援
立即獲取您的免費30天試用密鑰。
不需要信用卡或建立賬戶
C# 用於PDF的NuGet程式庫
使用NuGet安裝

版本: 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. 在解決方案資源管理器,右鍵點選參考,管理NuGet包
  2. 選擇瀏覽並搜尋"IronPdf"
  3. 選擇套件並安裝
C# PDF DLL
下載DLL

版本: 2026.9

或者點擊此處下載Windows安裝程式。

  1. 下載並解壓IronPDF到類似~/Libs的位置,位於您的解決方案目錄中
  2. 在Visual Studio解決方案資源管理器,右鍵點選參考。選擇瀏覽,"IronPdf.dll"

授權從$999起

有問題嗎?聯絡我們的開發團隊。

Key in blue circle

立即免費取得 30 天試用金鑰。

Your trial license will be sent to your email address

無任何限制。100% 解鎖。無需信用卡。

OR
bullet_checked無需信用卡或建立帳號無任何限制。100% 解鎖。無需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
預訂您的免費現場演示
Booking Badge

受到全球數百萬工程師的信任

Iron Software的客戶標誌
獲取您的無義務諮詢
填寫以下表格或電子郵件sales@ironsoftware.com
您的詳細資訊將始終保密。
受到全球數百萬工程師的信任
Iron Software的客戶標誌
立即獲取您的30天試用金鑰。
無需信用卡或帳戶建立
C# 用於PDF的NuGet程式庫
使用NuGet安裝

版本: 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. 在解決方案資源管理器,右鍵點選參考,管理NuGet包
  2. 選擇瀏覽並搜尋"IronPdf"
  3. 選擇套件並安裝
C# PDF DLL
下載DLL

版本: 2026.9

或者點擊此處下載Windows安裝程式。

  1. 下載並解壓IronPDF到類似~/Libs的位置,位於您的解決方案目錄中
  2. 在Visual Studio解決方案資源管理器,右鍵點選參考。選擇瀏覽,"IronPdf.dll"

授權從$999起