C#에서 목차를 추가하는 방법 | IronPDF

C#에서 목차를 추가하는 방법

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

IronPDF를 사용하면 TableOfContents 속성을 설정하여 C#에서 PDF 문서에 목차를 추가할 수 있습니다. 이 속성은 HTML 헤더(h1-h6)와 선택적으로 페이지 번호를 사용하여 하이퍼링크 탐색을 자동으로 생성합니다.

빠른 시작: C#을 사용하여 PDF에 목차 추가하기

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


PDF에서 목차란 무엇인가요?

목차(TOC)는 독자가 PDF 문서의 내용을 탐색하는 데 도움이 되는 로드맵입니다. 일반적으로 PDF의 시작 부분에 나타나며, 주요 섹션 또는 챕터 목록과 각 섹션이 시작되는 페이지 번호를 보여줍니다. 이를 통해 독자는 문서의 특정 부분을 빠르게 찾아 이동할 수 있으므로 필요한 정보에 더 쉽게 접근할 수 있습니다.

IronPDF는 'h1', 'h2', 'h3', 'h4', 'h5', 'h6' 요소에 하이퍼링크를 포함하는 목차를 생성하는 기능을 제공합니다. 이 목차의 기본 스타일은 HTML 콘텐츠의 다른 스타일과 충돌하지 않습니다. IronPDF를 사용하여 새 PDF를 만들 때 목차 기능은 HTML 헤더를 자동으로 스캔하여 문서 구성을 반영하는 계층적 탐색 구조를 생성합니다.

생성된 목차에는 독자가 원하는 섹션으로 바로 이동할 수 있는 클릭 가능한 링크가 포함되어 있어 긴 문서, 보고서 및 기술 문서에 특히 유용합니다. IronPDF의 목차 구현은 HTML의 의미 구조를 유지하면서 전문적인 PDF 탐색 기능을 제공합니다.

PDF 파일에 목차를 추가하는 방법은 무엇인가요?

출력 PDF 문서에 목차를 생성하려면 TableOfContents 속성을 사용하십시오. 이 속성은 다음과 같이 설명되는 세 가지 TableOfContentsTypes 중 하나에 할당될 수 있습니다.

  • 없음: 목차를 만들지 마십시오
  • 기본: 페이지 번호 없이 목차를 만드세요
  • WithPageNumbers: 페이지 번호가 포함된 목차를 생성합니다.

이 기능은 JavaScript를 사용하여 목차를 생성합니다. 따라서 엔진에는 JavaScript가 활성화되어 있어야 합니다. IronPDF의 JavaScript 엔진은 HTML 파일을 PDF로 변환할 때 헤더 태그를 처리하고 적절한 탐색 구조를 생성합니다. 이 기능을 더 잘 이해하려면 아래 샘플 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");
$vbLabelText   $csharpLabel

보다 고급스러운 시나리오에서는 목차를 다른 렌더링 옵션 과 결합하여 포괄적인 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");
$vbLabelText   $csharpLabel

생성된 PDF 파일은 어떤 모습인가요?

목차는 'h1', 'h2', 'h3', 'h4', 'h5', 'h6' 각각에 대한 하이퍼링크를 포함하여 생성됩니다. 헤더의 계층 구조가 유지되며, 하위 헤더는 상위 섹션 아래로 적절하게 들여쓰기됩니다. 목차와 함께 탐색을 더욱 편리하게 하기 위해 PDF에 페이지 번호를 추가 할 수도 있습니다.

참고해 주세요문서에서 Merge 방법을 사용하면 목차의 하이퍼링크가 깨집니다.

병합되거나 분할된 PDF 파일을 다룰 때는 정확한 페이지 참조와 작동하는 하이퍼링크를 보장하기 위해 모든 문서 조립이 완료된 후에 목차를 생성해야 합니다.


PDF 파일의 목차는 어디에 배치해야 할까요?

  1. HTML 문서에 적절한 헤더 태그(h1부터 h6까지)가 있는지 확인하십시오.
  2. 선택적으로 목차를 표시할 위치에 div를 삽입할 수 있습니다. 아래 div 요소가 제공되지 않으면 IronPDF는 목차를 맨 앞에 삽입합니다.
<div id="ironpdf-toc"></div>
<div id="ironpdf-toc"></div>
HTML
  1. 렌더링 옵션에서 목차를 페이지 번호와 함께 또는 페이지 번호 없이 렌더링할지 선택합니다.

레이아웃이 복잡한 문서의 경우, 목차와 머리글, 바닥글을 결합하여 전문적인 문서 구조를 만드세요. 최적의 목차 생성을 위한 올바른 HTML 구조의 예는 다음과 같습니다.

<!DOCTYPE html>
<html>
<head>
    <title>My Document</title>
</head>
<body>

    <div id="ironpdf-toc"></div>

    <div style="page-break-after: always;"></div>

    <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>
<!DOCTYPE html>
<html>
<head>
    <title>My Document</title>
</head>
<body>

    <div id="ironpdf-toc"></div>

    <div style="page-break-after: always;"></div>

    <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

목차의 스타일을 어떻게 지정하나요?

목차는 CSS를 사용하여 스타일을 지정할 수 있으며, 이를 위해서는 목차의 스타일을 정의하는 다양한 CSS 선택자를 대상으로 해야 합니다. PDF에서 글꼴을 관리할 때 목차는 기본적으로 문서의 글꼴 설정을 상속받지만, 별도로 사용자 지정할 수도 있습니다.

또한, CustomCssUrl 속성을 사용하여 스타일을 수정할 수 있습니다. 먼저 아래 목차의 원래 스타일이 포함된 CSS 파일을 다운로드하세요.

[{w:(현재 목차 스타일을 지정할 때 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");
$vbLabelText   $csharpLabel

사용자 지정 용지 크기를 사용할 경우, 다양한 페이지 크기에 맞춰 목차 스타일을 조정하고 텍스트 흐름과 페이지 매김이 제대로 이루어지도록 해야 할 수 있습니다.

헤더 레벨별로 스타일을 지정하려면 어떻게 해야 하나요?

목차의 H1 헤더에 다른 스타일을 적용하려면 '#ironpdf-toc ul li.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 속성을 활용하여 에두아르도 투니가 디자인한 사용자 지정 ' 레몬 ' 글꼴을 사용하십시오.

 #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 선택기의 background-image를 수정하십시오. 원래 스타일링에서 두 번째 매개변수는 "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;
 }
목차는 장, 절, 강의로 구성되며, 계층적 들여쓰기와 오른쪽 정렬된 페이지 번호를 보여줍니다.

더욱 고급스러운 스타일링 옵션을 사용하려면 다양한 패턴을 사용하여 사용자 지정 지시선을 만드세요.

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

당신이 할 수 있는 다른 일들을 알아볼 준비가 되셨나요? PDF 변환 방법에 대한 튜토리얼 페이지는 여기에서 확인하세요.

자주 묻는 질문

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를 설정할 때 문서 요구 사항에 가장 적합한 옵션을 선택할 수 있습니다.

목차 기능을 사용하려면 자바스크립트가 필요합니까?

네, IronPDF는 목차를 생성하기 위해 JavaScript를 사용하므로 렌더링 엔진에서 JavaScript가 활성화되어 있어야 합니다. 일반적으로 JavaScript는 기본적으로 활성화되어 있지만, 렌더링 옵션에서 JavaScript를 비활성화한 경우 목차 기능이 제대로 작동하려면 JavaScript를 활성화해야 합니다.

한 줄의 코드로 페이지 번호가 포함된 목차를 어떻게 설정할 수 있나요?

다음 한 줄 코드를 사용하여 페이지 번호가 포함된 목차가 있는 PDF를 생성할 수 있습니다. `new ChromePdfRenderer { RenderingOptions = { TableOfContents = TableOfContentsTypes.WithPageNumbers, FirstPageNumber = 1 } }.RenderHtmlFileAsPdf("myDocument.html").SaveAs("withToc.pdf");` 이 코드는 하이퍼링크 탐색 및 페이지 번호가 포함된 완벽한 기능의 목차를 생성합니다.

목차 스타일이 기존 HTML 스타일과 충돌할까요?

아니요, IronPDF의 기본 목차 스타일은 HTML 콘텐츠의 다른 스타일과 충돌하지 않도록 설계되었습니다. 생성된 목차는 기존 문서 콘텐츠의 모양을 유지하면서도 올바르게 표시되도록 자체적인 별도 스타일을 유지합니다.

커티스 차우
기술 문서 작성자

커티스 차우는 칼턴 대학교에서 컴퓨터 과학 학사 학위를 취득했으며, Node.js, TypeScript, JavaScript, React를 전문으로 하는 프론트엔드 개발자입니다. 직관적이고 미적으로 뛰어난 사용자 인터페이스를 만드는 데 열정을 가진 그는 최신 프레임워크를 활용하고, 잘 구성되고 시각적으로 매력적인 매뉴얼을 제작하는 것을 즐깁니다.

커티스는 개발 분야 외에도 사물 인터넷(IoT)에 깊은 관심을 가지고 있으며, 하드웨어와 소프트웨어를 통합하는 혁신적인 방법을 연구합니다. 여가 시간에는 게임을 즐기거나 디스코드 봇을 만들면서 기술에 대한 애정과 창의성을 결합합니다.

시작할 준비 되셨나요?
Nuget 다운로드 17,527,568 | 버전: 2026.2 방금 출시되었습니다