如何在C#中新增目錄
IronPDF可讓您在C#中的PDF文件中新增目錄,方法是設置h6)生成超連結導航,並可選擇顯示頁碼。
-
1Install IronPDF with NuGet Package Manager
-
2複製並運行這段程式碼片段。
new ChromePdfRenderer { RenderingOptions = { CreateOutlineMaps = true, OutlineMapsFormat = TableOfContentsTypes.WithPageNumbers, FirstPageNumber = 1 } } .RenderHtmlFileAsPdf("myDocument.html") .SaveAs("withToc.pdf");New ChromePdfRenderer With { .RenderingOptions = New PdfRenderingOptions With { .CreateOutlineMaps = True, .OutlineMapsFormat = TableOfContentsTypes.WithPageNumbers, .FirstPageNumber = 1 } }.RenderHtmlFileAsPdf("myDocument.html").SaveAs("withToc.pdf")New ChromePdfRenderer With { .RenderingOptions = New PdfRenderingOptions With { .CreateOutlineMaps = True, .OutlineMapsFormat = TableOfContentsTypes.WithPageNumbers, .FirstPageNumber = 1 } }.RenderHtmlFileAsPdf("myDocument.html").SaveAs("withToc.pdf") -
3部署以在您的實時環境中測試
今天就開始在您的專案中使用IronPDF,透過免費試用
簡化工作流程(5個步驟)
- 下載用於新增目錄的C#程式庫
- 準備要轉換為PDF的HTML
- 設置TableOfContents屬性以啟用目錄
- 選擇是否顯示頁碼
- 優化目錄的放置位置
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");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")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")在更高級的方案中,您可以將目錄與其他呈現選項結合起來建立綜合的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");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")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")生成的PDF什麼樣子?
目錄將會建立,並帶有指向每個h6的超連結。 您的標題層次結構將被保留,並且每個子標題將正確縮進於其父節下。 您還可以新增頁數至您的PDF,以在目錄旁提供附加的導航支持。
Merge方法將破壞目錄的超連結。
在處理合併或拆分的PDF時,請在完成所有文件組裝後生成目錄,以確保準確的頁面引用和功能性超連結。
我應該將目錄放在PDF的什麼位置?
- 確保HTML文件具有正確的標頭標籤(
h6)。 - 可選地插入一個div以決定目錄顯示的位置。 如果未提供以下div,IronPDF將在開始處插入目錄。
<div id="ironpdf-toc"></div>
- 在渲染選項中,選擇要顯示帶有或不帶頁碼的目錄渲染。
對於具有複雜佈局的文件,將目錄與頁眉和頁腳結合起來,以建立專業的文件結構。 這是最佳目錄生成的正確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>
如何設計目錄的樣式?
可以使用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");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")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")當處理自訂紙張尺寸時,您可能需要調整目錄樣式以符合不同頁面尺寸,並確保正確的文字流和頁面分隔。
如何設計不同的標頭級別?
使用#IronPDF-toc ul li.h1選擇器為目錄中的H1標頭應用不同的樣式。 將h6,為各自的標頭更改樣式。
#ironpdf-toc ul li.h1 {
font-style: italic;
font-weight: bold;
}

如何更改字體系列?
使用'#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;
}

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

如何移除或自訂點線?
要移除標題和頁碼之間的點線,請修改::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;
}

若要更高級的樣式選項,使用不同的樣式圖案建立自訂引導線:
/* 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;
}
準備好瞭解您還可以做什麼嗎? 在這裡查看我們的教程頁面:轉換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.
How do I add a title to the table of contents in IronPDF?
Set TableOfContentsTitle on ChromePdfRenderOptions, available from IronPDF v2026.10.1. The heading is placed inside #ironpdf-toc above the list, in the normal document flow, so no coordinates are needed. Set TableOfContentsIncludesTitleEntry = true to also list the title as the first entry of the table of contents.
Why is my table of contents title not showing?
A null, empty or whitespace-only title counts as unset, so neither the heading nor the title entry is drawn. The feature is also disabled when TableOfContents is None, and a document with no h1 to h6 headings generates no table of contents at all.
Why is my .toc-heading CSS being ignored?
It depends on how the CSS reaches CustomCssUrl. A local file is merged by exact selector text, so a #ironpdf-toc .toc-heading rule replaces the built-in rule wholesale and should restate font-size, font-weight and margin. A remote URL is linked before the built-in styles, so ties lose to them; use a more specific selector such as div#ironpdf-toc .toc-heading, or !important.
Why did my table of contents page numbers change after upgrading?
From IronPDF v2026.10.1, a non-default FirstPageNumber also offsets the page numbers inside a WithPageNumbers table of contents, keeping them aligned with the header and footer {page} token. The default value of 1 reproduces the previous numbering exactly; set FirstPageNumber = 1 to keep the old 1-based numbering.
Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。