Hinzufügen von PDF-Lesezeichen und Gliederungen in C# mit IronPDF
IronPDF ermöglicht das Hinzufügen von Lesezeichen (Gliederungen) zu PDF-Dokumenten in C#, wodurch Navigationshilfen ähnlich wie ein Inhaltsverzeichnis erstellt werden können. Fügen Sie ein- oder mehrschichtige Lesezeichen hinzu, um die Benutzerfreundlichkeit des Dokuments zu verbessern und den Benutzern zu helfen, schnell zu wichtigen Abschnitten zu springen. Diese Funktion funktioniert nahtlos in Windows-, Linux- und macOS-Umgebungen.
Schnellstart: Lesezeichen zu Ihrem PDF in C# hinzufügen
Mit IronPDF können Sie schnell loslegen, indem Sie Lesezeichen zu Ihren PDF-Dokumenten hinzufügen. In diesem Leitfaden wird gezeigt, wie man eine vorhandene PDF-Datei lädt, Lesezeichen für die Navigation hinzufügt und das aktualisierte Dokument speichert. Perfekt für Entwickler, die die PDF-Funktionalität in ihren C#-Projekten erweitern möchten.
-
Installieren Sie IronPDF mit NuGet Package Manager
-
Kopieren Sie diesen Codeausschnitt und führen Sie ihn aus.
var pdf = new IronPdf.PdfDocument("example.pdf"); pdf.Bookmarks.AddBookMarkAtEnd("Chapter 1", 1); pdf.SaveAs("bookmarked.pdf"); -
Bereitstellen zum Testen in Ihrer Live-Umgebung
Beginnen Sie noch heute, IronPDF in Ihrem Projekt zu verwenden, mit einer kostenlosen Testversion
Minimaler Arbeitsablauf (5 Schritte)
- IronPDF von NuGet herunterladen
- Laden Sie vorhandenes oder rendern Sie ein neues PDF-Dokument
- Hinzufügen von einschichtigen Lesezeichen, um zu wichtigen Abschnitten zu springen
- Hinzufügen von Lesezeichen auf mehreren Ebenen für eine hierarchische Organisation
- Abrufen und Anzeigen von Lesezeicheneigenschaften
Wie arbeite ich mit PDF-Lesezeichen in C#?
In Adobe Acrobat Reader werden Inhaltsverzeichnisse (auch Lesezeichen genannt) in der linken Seitenleiste angezeigt und bieten eine bequeme Möglichkeit, zu wichtigen Abschnitten des Dokuments zu springen. Lesezeichen fungieren als interaktives Inhaltsverzeichnis, das den Lesern ein effizientes Navigieren in komplexen Dokumenten ermöglicht.
Mit IronPDF können Sie PDF-Dokumente importieren und verschiedene Operationen an bestehenden Gliederungen durchführen, z. B. Hinzufügen, Umordnen, Bearbeiten von Eigenschaften und Löschen von Lesezeichen. Damit haben Sie die volle Kontrolle über die Organisation und Struktur Ihrer PDF-Dateien, ähnlich wie beim Zusammenführen oder Teilen von PDFs für die Dokumentenverwaltung.
Wie füge ich Lesezeichen auf einer Ebene hinzu?
Das Hinzufügen eines Lesezeichens in IronPDF ist ganz einfach. Verwenden Sie die Methode AddBookmarkAtEnd, um den Namen des Lesezeichens und den entsprechenden Seitenindex anzugeben. Diese Funktionalität lässt sich gut mit anderen PDF-Vorgängen wie Einfügen von Kopf- und Fußzeilen oder Einstellen von benutzerdefinierten Rändern integrieren, um professionelle Dokumente zu erstellen. Unten ist ein Beispiel:
:path=/static-assets/pdf/content-code-examples/how-to/bookmarks-single-layer-bookmark.cs
using IronPdf;
// Create a new PDF or edit an existing document.
PdfDocument pdf = PdfDocument.FromFile("existing.pdf");
// Add a bookmark
pdf.Bookmarks.AddBookMarkAtEnd("NameOfBookmark", 0);
// Add a sub-bookmark
pdf.Bookmarks.AddBookMarkAtEnd("NameOfSubBookmark", 1);
pdf.SaveAs("singleLayerBookmarks.pdf");
Imports IronPdf
' Create a new PDF or edit an existing document.
Private pdf As PdfDocument = PdfDocument.FromFile("existing.pdf")
' Add a bookmark
pdf.Bookmarks.AddBookMarkAtEnd("NameOfBookmark", 0)
' Add a sub-bookmark
pdf.Bookmarks.AddBookMarkAtEnd("NameOfSubBookmark", 1)
pdf.SaveAs("singleLayerBookmarks.pdf")
Die Methode AddBookMarkAtEnd fügt Lesezeichen am Ende der vorhandenen Lesezeichenliste hinzu. Für mehr Kontrolle über die Positionierung der Lesezeichen verwenden Sie AddBookMarkAtStart, um Lesezeichen am Anfang der Liste einzufügen. Jedes Lesezeichen verweist auf einen bestimmten Seitenindex, was eine präzise Navigation im Dokument ermöglicht.
Einlagige Lesezeichen Dokument
Wie erstelle ich mehrschichtige Lesezeichen-Hierarchien?
IronPDF ermöglicht das Hinzufügen von Lesezeichen in einer Baumstruktur, was besonders nützlich ist, um die Navigation in großen PDF-Dokumenten aufrechtzuerhalten. Diese Funktion ist wertvoll, wenn es um umfangreiche Sammlungen von Prüfungsunterlagen, Verkaufsberichten oder Quittungsbelegen aus verschiedenen Daten und Orten in einem einzigen PDF-Dokument geht. Ähnlich wie bei der Erstellung von PDF-Formularen zur Datenerfassung helfen strukturierte Lesezeichen dabei, komplexe Informationen hierarchisch zu organisieren.
Die Methode AddBookMarkAtEnd gibt ein Objekt vom Typ IPdfBookMark zurück, sodass Sie untergeordnete Lesezeichen hinzufügen können. Verwenden Sie beispielsweise Children.AddBookMarkAtStart("Date1", 0) oder Children.AddBookMarkAtEnd("Date1", 0), um untergeordnete Lesezeichen zum Lesezeichen 'Prüfung' hinzuzufügen. Diese verschachtelte Struktur schafft eine hierarchische Organisation, die den logischen Fluss Ihres Dokuments widerspiegelt. Der folgende Code demonstriert dieses Konzept:
:path=/static-assets/pdf/content-code-examples/how-to/bookmarks-multi-layer-bookmark.cs
using IronPdf;
// Load existing PDF document
PdfDocument pdf = PdfDocument.FromFile("examinationPaper.pdf");
// Assign IPdfBookMark object to a variable
var mainBookmark = pdf.Bookmarks.AddBookMarkAtEnd("Examination", 0);
// Add bookmark for days
var date1Bookmark = mainBookmark.Children.AddBookMarkAtStart("Date1", 1);
// Add bookmark for type of test
var paperBookmark = date1Bookmark.Children.AddBookMarkAtStart("Paper", 1);
paperBookmark.Children.AddBookMarkAtEnd("PersonA", 3);
paperBookmark.Children.AddBookMarkAtEnd("PersonB", 4);
// Add bookmark for days
var date2Bookmark = mainBookmark.Children.AddBookMarkAtEnd("Date2", 5);
// Add bookmark for type of test
var computerBookmark = date2Bookmark.Children.AddBookMarkAtStart("Computer", 5);
computerBookmark.Children.AddBookMarkAtEnd("PersonC", 6);
computerBookmark.Children.AddBookMarkAtEnd("PersonD", 7);
pdf.SaveAs("multiLayerBookmarks.pdf");
Imports IronPdf
' Load existing PDF document
Private pdf As PdfDocument = PdfDocument.FromFile("examinationPaper.pdf")
' Assign IPdfBookMark object to a variable
Private mainBookmark = pdf.Bookmarks.AddBookMarkAtEnd("Examination", 0)
' Add bookmark for days
Private date1Bookmark = mainBookmark.Children.AddBookMarkAtStart("Date1", 1)
' Add bookmark for type of test
Private paperBookmark = date1Bookmark.Children.AddBookMarkAtStart("Paper", 1)
paperBookmark.Children.AddBookMarkAtEnd("PersonA", 3)
paperBookmark.Children.AddBookMarkAtEnd("PersonB", 4)
' Add bookmark for days
Dim date2Bookmark = mainBookmark.Children.AddBookMarkAtEnd("Date2", 5)
' Add bookmark for type of test
Dim computerBookmark = date2Bookmark.Children.AddBookMarkAtStart("Computer", 5)
computerBookmark.Children.AddBookMarkAtEnd("PersonC", 6)
computerBookmark.Children.AddBookMarkAtEnd("PersonD", 7)
pdf.SaveAs("multiLayerBookmarks.pdf")
Dieser hierarchische Ansatz ist besonders wertvoll bei der Arbeit mit komplexen Dokumenten, die eine detaillierte Organisation erfordern. Die verschachtelte Struktur ermöglicht es den Benutzern, Lesezeichenabschnitte ein- und auszublenden, sodass die Navigation selbst in Dokumenten mit Hunderten von Seiten intuitiv ist.
Mehrlagige Lesezeichen Dokument
Wie generiere ich automatisch Lesezeichen aus HTML-Überschriften?
Beim Konvertieren von HTML in PDF kann IronPDF automatisch eine hierarchische Lesezeichenstruktur aus der Überschriftenstruktur des Dokuments (h1-h6) oder beliebigen benutzerdefinierten CSS-Selektoren erstellen. Dies macht es überflüssig, AddBookMarkAtEnd für jeden Abschnitt manuell aufzurufen.
Aktivieren Sie die Funktion mit der Eigenschaft AutoBookmarksFromHeadings auf RenderingOptions, bevor Sie RenderHtmlAsPdf oder RenderUrlAsPdf aufrufen:
:path=/static-assets/pdf/content-code-examples/how-to/bookmarks-auto-from-headings.cs
using IronPdf;
var renderer = new ChromePdfRenderer();
// Master switch: auto-generate bookmarks from HTML headings (h1-h6) during rendering
renderer.RenderingOptions.AutoBookmarksFromHeadings = true;
var html = @"
al Report</h1>
utive Summary</h2>
iew of the year.</p>
ncial Results</h2>
nue</h3>
nses</h3>
ook</h2>
ng forward.</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
// pdf.Bookmarks is already populated with a hierarchical outline matching the heading structure
pdf.SaveAs("auto-bookmarked.pdf");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
' Master switch: auto-generate bookmarks from HTML headings (h1-h6) during rendering
renderer.RenderingOptions.AutoBookmarksFromHeadings = True
Dim html As String = "
al Report</h1>
utive Summary</h2>
iew of the year.</p>
ncial Results</h2>
nue</h3>
nses</h3>
ook</h2>
ng forward.</p>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
' pdf.Bookmarks is already populated with a hierarchical outline matching the heading structure
pdf.SaveAs("auto-bookmarked.pdf")
Die folgenden Eigenschaften steuern, welche Elemente als Lesezeichen markiert werden:
AutoBookmarksFromHeadings(bool, Standardfalse): Schalten Sie die Funktion ein. Wenn auftruegesetzt, erstellt IronPDF automatisch eine Lesezeichenübersicht aus Ihren HTML-Überschriften.AutoBookmarkMinHeadingLevel(int, Standard1): Die höchste Überschriftsebene, von der aus gestartet werden soll. Auf1setzen, um h1 (den Anfang des Dokuments) einzuschließen.AutoBookmarkMaxHeadingLevel(int, Standard6): Die tiefste einzuschließende Überschriftsebene. Auf3setzen, um nur h1, h2 und h3 zu markieren — h4 bis h6 werden ignoriert.AutoBookmarkCssSelectors(string[], Standardnull): Verwenden Sie benutzerdefinierte CSS-Selektoren anstelle von Überschriften-Tags. Zum Beispiel:".chapter-title"oder"[data-bookmark]".
Anpassung der Überschriftsebenen und CSS-Selektoren
Um Lesezeichen nur auf die obersten Überschriften zu beschränken:
renderer.RenderingOptions.AutoBookmarksFromHeadings = true;
renderer.RenderingOptions.AutoBookmarkMaxHeadingLevel = 3;
renderer.RenderingOptions.AutoBookmarksFromHeadings = true;
renderer.RenderingOptions.AutoBookmarkMaxHeadingLevel = 3;
renderer.RenderingOptions.AutoBookmarksFromHeadings = True
renderer.RenderingOptions.AutoBookmarkMaxHeadingLevel = 3
Um anstelle von Überschriften benutzerdefinierte Elemente als Lesezeichen zu markieren, geben Sie CSS-Selektoren an:
renderer.RenderingOptions.AutoBookmarksFromHeadings = true;
renderer.RenderingOptions.AutoBookmarkCssSelectors = new[]
{
"h1",
".chapter-title",
"[data-bookmark]"
};
renderer.RenderingOptions.AutoBookmarksFromHeadings = true;
renderer.RenderingOptions.AutoBookmarkCssSelectors = new[]
{
"h1",
".chapter-title",
"[data-bookmark]"
};
renderer.RenderingOptions.AutoBookmarksFromHeadings = True
renderer.RenderingOptions.AutoBookmarkCssSelectors = New String() {
"h1",
".chapter-title",
"[data-bookmark]"
}
Wie kann ich die gerenderte Position von HTML-Elementen abfragen?
Nach dem Rendern kann IronPDF genau angeben, auf welcher Seite und an welchen Koordinaten sich ein bestimmtes HTML-Element befindet. Dies ersetzt das ältere Verfahren, zuerst zu rendern, den Text zu extrahieren und die Seiten manuell zu durchsuchen.
Setzen Sie ElementQuerySelectors auf RenderingOptions vor dem Rendern, und rufen Sie dann GetElementLocations auf dem resultierenden PdfDocument auf:
:path=/static-assets/pdf/content-code-examples/how-to/bookmarks-element-locations.cs
using IronPdf;
using System;
var renderer = new ChromePdfRenderer();
// Configure which elements should be queryable after rendering
renderer.RenderingOptions.ElementQuerySelectors = new[] { "h1", ".kpi-card" };
var html = @"
ashboard</h1>
ss='kpi-card'>Revenue: $1.2M</div>
ss='kpi-card'>Growth: 18%</div>
omparison</h1>
ss='kpi-card'>Previous: $1.0M</div>";
var pdf = renderer.RenderHtmlAsPdf(html);
// Retrieve the rendered page location of each matched element
foreach (var location in pdf.GetElementLocations())
{
Console.WriteLine($"'{location.Text}' on page {location.PageIndex + 1} " +
$"at ({location.Rectangle.X}, {location.Rectangle.Y})");
}
pdf.SaveAs("dashboard.pdf");
Imports IronPdf
Imports System
Dim renderer As New ChromePdfRenderer()
' Configure which elements should be queryable after rendering
renderer.RenderingOptions.ElementQuerySelectors = New String() {"h1", ".kpi-card"}
Dim html As String = "
ashboard</h1>
ss='kpi-card'>Revenue: $1.2M</div>
ss='kpi-card'>Growth: 18%</div>
omparison</h1>
ss='kpi-card'>Previous: $1.0M</div>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
' Retrieve the rendered page location of each matched element
For Each location In pdf.GetElementLocations()
Console.WriteLine($"'{location.Text}' on page {location.PageIndex + 1} " &
$"at ({location.Rectangle.X}, {location.Rectangle.Y})")
Next
pdf.SaveAs("dashboard.pdf")
GetElementLocations gibt ein List<RenderedElementLocation> zurück, das einen Eintrag pro übereinstimmendem Element enthält:
| Eigenschaft | Typ | Was es Ihnen sagt |
|---|---|---|
Text |
string |
Der Text innerhalb des Elements. |
PageIndex |
int |
Auf welcher Seite das Element gelandet ist (beginnend bei 0). |
Rectangle |
IronSoftware.Drawing.Rectangle |
Die Position des Elements auf der Seite, in PDF-Punkten (1/72 Zoll). Ursprung ist unten links. |
ElementIndex |
int |
Die Reihenfolge des Elements im ursprünglichen HTML (beginnend bei 0). |
ResetElementLocationCache auf, um beim nächsten Aufruf von GetElementLocations einen erneuten Scan zu erzwingen.
Kombination von Auto-Lesezeichen mit der Verfolgung von Elementpositionen
Auto-Lesezeichen und Standortabfragen von Elementen können in einem einzigen Render kombiniert werden. Zum Beispiel: Erstellen Sie eine Gliederung aus h1/h2-Überschriften und verfolgen Sie gleichzeitig die Seitenspeicherorte von .invoice-total Elementen.
:path=/static-assets/pdf/content-code-examples/how-to/bookmarks-auto-and-locations.cs
using IronPdf;
using System;
var renderer = new ChromePdfRenderer();
// Auto-generate bookmarks from top-level headings only
renderer.RenderingOptions.AutoBookmarksFromHeadings = true;
renderer.RenderingOptions.AutoBookmarkMaxHeadingLevel = 2;
// Also track the page location of invoice totals after rendering
renderer.RenderingOptions.ElementQuerySelectors = new[] { ".invoice-total" };
var html = @"
ice #2026-001</h1>
Items</h2>
ces rendered for Q1.</p>
='invoice-total'>Subtotal: $4,500.00</p>
ice #2026-002</h1>
Items</h2>
lting hours for Q2.</p>
='invoice-total'>Subtotal: $7,200.00</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
// Bookmarks are populated automatically; locations can be queried after rendering
foreach (var location in pdf.GetElementLocations())
{
Console.WriteLine($"{location.Text} appears on page {location.PageIndex + 1}");
}
pdf.SaveAs("invoices.pdf");
Imports IronPdf
Imports System
Dim renderer As New ChromePdfRenderer()
' Auto-generate bookmarks from top-level headings only
renderer.RenderingOptions.AutoBookmarksFromHeadings = True
renderer.RenderingOptions.AutoBookmarkMaxHeadingLevel = 2
' Also track the page location of invoice totals after rendering
renderer.RenderingOptions.ElementQuerySelectors = New String() {".invoice-total"}
Dim html As String = "
ice #2026-001</h1>
Items</h2>
ces rendered for Q1.</p>
='invoice-total'>Subtotal: $4,500.00</p>
ice #2026-002</h1>
Items</h2>
lting hours for Q2.</p>
='invoice-total'>Subtotal: $7,200.00</p>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
' Bookmarks are populated automatically; locations can be queried after rendering
For Each location In pdf.GetElementLocations()
Console.WriteLine($"{location.Text} appears on page {location.PageIndex + 1}")
Next
pdf.SaveAs("invoices.pdf")
Wie kann ich vorhandene Lesezeichen abrufen und darin navigieren?
IronPDF erleichtert das Auffinden und Anzeigen von Lesezeichen in einem PDF-Dokument. Das Navigieren durch den Lesezeichennavigationsbaum ist einfach und bietet nahtlosen Zugriff auf verschiedene Abschnitte. Diese Funktionalität ist unerlässlich für die Arbeit mit vorhandenen PDFs, die bearbeitet werden müssen, oder für die Implementierung von Funktionen wie Suchen und Ersetzen von Text in mit Lesezeichen versehenen Abschnitten. Betrachten Sie das obige Beispiel des multi-layer bookmarks document.
Das Lesezeichen 'Prüfung' hat eine Eigenschaft Children, die auf die Lesezeichen 'Datum1' und 'Datum2' verweist. Das Lesezeichen 'Datum1' hat eine Eigenschaft NextBookmark, die auf das Lesezeichen 'Datum2' verweist. Darüber hinaus hat das Lesezeichen 'Datum1' eine Eigenschaft Children, die das Lesezeichen 'Papier' enthält. Diese vernetzte Struktur ermöglicht ausgeklügelte Navigationsmuster und eine gute Organisation des Dokuments.
Um alle Lesezeichen im geöffneten PDF-Dokument abzurufen, verwenden Sie die Methode GetAllBookmarks. So erhalten Sie eine umfassende Liste aller Lesezeichen, die es Ihnen ermöglicht, die Lesezeichenstruktur zu analysieren und zu nutzen:
:path=/static-assets/pdf/content-code-examples/how-to/bookmarks-retrieve-bookmark.cs
using IronPdf;
// Load existing PDF document
PdfDocument pdf = PdfDocument.FromFile("multiLayerBookmarks.pdf");
// Retrieve bookmarks list
var mainBookmark = pdf.Bookmarks.GetAllBookmarks();
Imports IronPdf
' Load existing PDF document
Private pdf As PdfDocument = PdfDocument.FromFile("multiLayerBookmarks.pdf")
' Retrieve bookmarks list
Private mainBookmark = pdf.Bookmarks.GetAllBookmarks()
-1 gesetzt.
Erfahren Sie im folgenden Artikel, wie Sie ein Inhaltsverzeichnis erstellen, wenn Sie ein PDF aus HTML generieren: "Erstellen eines Inhaltsverzeichnisses mit IronPDF."
Bereit zu sehen, was Sie sonst noch tun können? Sehen Sie sich hier unsere Tutorialseite an: PDFs organisieren
Häufig gestellte Fragen
Wie füge ich in C# Lesezeichen zu einem PDF-Dokument hinzu?
IronPDF macht es einfach, PDF-Dokumenten in C# Lesezeichen hinzuzufügen. Sie können die AddBookmarkAtEnd-Methode verwenden, um einlagige Lesezeichen hinzuzufügen, indem Sie den Namen des Lesezeichens und den Seitenindex angeben. Zum Beispiel: pdf.Bookmarks.AddBookMarkAtEnd("Kapitel 1", 1). Auf diese Weise werden Navigationshilfen ähnlich wie bei einem Inhaltsverzeichnis erstellt, die dem Benutzer helfen, schnell zu wichtigen Abschnitten zu springen.
Was ist der Unterschied zwischen den Methoden AddBookmarkAtEnd und AddBookmarkAtStart?
IronPDF bietet zwei Methoden für die Platzierung von Lesezeichen. Die AddBookMarkAtEnd-Methode fügt Lesezeichen an das Ende der bestehenden Lesezeichenliste an, während AddBookMarkAtStart Lesezeichen am Anfang der Liste einfügt. Beide Methoden verweisen auf bestimmte Seitenindizes für eine präzise Navigation innerhalb des Dokuments.
Kann ich hierarchische Lesezeichenstrukturen mit mehreren Ebenen erstellen?
Ja, mit IronPDF können Sie mehrschichtige Lesezeichenhierarchien in einer Baumstruktur erstellen. Dies ist besonders nützlich für die Organisation komplexer Dokumente mit verschachtelten Abschnitten, ähnlich wie Sie ein detailliertes Inhaltsverzeichnis mit Kapiteln und Unterkapiteln strukturieren würden.
Ist die Lesezeichenfunktionalität mit verschiedenen Betriebssystemen kompatibel?
Die Lesezeichenfunktion von IronPDF funktioniert nahtlos in Windows-, Linux- und macOS-Umgebungen. Sie können PDF-Lesezeichen unabhängig von Ihrem Betriebssystem hinzufügen, bearbeiten und verwalten und so eine konsistente Funktionalität über verschiedene Plattformen hinweg sicherstellen.
Welche Operationen kann ich mit vorhandenen PDF-Lesezeichen durchführen?
Mit IronPDF können Sie verschiedene Operationen an bestehenden PDF-Gliederungen durchführen, z. B. neue Lesezeichen hinzufügen, sie neu anordnen, Lesezeicheneigenschaften bearbeiten und unerwünschte Lesezeichen löschen. Damit haben Sie die volle Kontrolle über die Organisation und Struktur Ihrer PDF-Dateien.
Wie werden die Lesezeichen angezeigt, wenn der Benutzer die PDF-Datei öffnet?
In Adobe Acrobat Reader und ähnlichen PDF-Viewern werden die mit IronPDF erstellten Lesezeichen als Umrisse in der linken Seitenleiste angezeigt. Sie fungieren als interaktives Inhaltsverzeichnis, das dem Leser eine effiziente Navigation in komplexen Dokumenten ermöglicht, indem er durch Anklicken zu bestimmten Abschnitten springen kann.

