Report with Bookmarks Sample
Overview
The Report with Bookmarks sample demonstrates PDF bookmark/outline navigation:
- Hierarchical structure — top-level sections, sub-sections, and entries
- Multiple levels — parent-child bookmark relationships
- Page positioning — bookmarks linked to specific page locations
- Developer guide — comprehensive technical documentation
- Professional layout — headers, content sections, and footers
Key Features Demonstrated
1. Defining Bookmarks
// Top-level bookmarks
doc.Bookmark("Introduction", 1, 120.0);
doc.Bookmark("Getting Started", 2);
doc.Bookmark("Core Features", 3);
doc.Bookmark("Advanced Topics", 5);
doc.Bookmark("Appendix", 6);
// Sub-section bookmarks
doc.Bookmark("Installation", 2, "Getting Started");
doc.Bookmark("Quick Start", 2, "Getting Started", 200.0);
doc.Bookmark("Configuration", 2, "Getting Started", 280.0);
// Feature bookmarks
doc.Bookmark("Text & Typography", 3, "Core Features");
doc.Bookmark("Layout Containers", 3, "Core Features", 150.0);
doc.Bookmark("Tables", 4, "Core Features");
doc.Bookmark("Images & Hyperlinks",4, "Core Features", 200.0);
2. Bookmark Structure
// Bookmark(title, pageNumber, parentTitle, topYPosition)
// - pageNumber: which page the bookmark points to
// - parentTitle (optional): parent bookmark for hierarchy
// - topYPosition (optional): Y-coordinate on the page (0 = top)
3. Page with Multiple Content Sections
doc.Page(page =>
{
page.Size(PageSize.A4);
page.Margin(2.5, Unit.Centimetre);
page.PageColor(Color.White);
page.DefaultTextStyle(s => s.FontSize(11));
page.Header().Background(brand).Padding(10).Column(h =>
h.Item().AlignCenter().Text("TERRAPDF DEVELOPER GUIDE")
.Bold().FontSize(18).FontColor(Color.White));
page.Content().Column(col =>
{
col.Item().PaddingTop(20).Text("Introduction")
.Bold().FontSize(22).FontColor(brand).AlignCenter();
col.Item().PaddingTop(12).Text(introductionContent)
.Justify().FontColor(muted);
});
page.Footer().AlignCenter().Text(t =>
{
t.Span("TerraPDF Developer Guide | ");
t.CurrentPageNumber().FontSize(9).FontColor(brand).Bold();
t.Span(" / ");
t.TotalPages().FontSize(9).FontColor(brand).Bold();
});
});
4. Metadata for Accessibility
doc.MetadataTitle("TerraPDF Developer Guide");
doc.MetadataAuthor("TerraPDF Engineering Team");
doc.MetadataSubject("Comprehensive guide to TerraPDF features and APIs");
doc.MetadataKeywords("pdf; terra; dotnet; guide; documentation");
doc.MetadataCreator("TerraPDF Sample Generator v1.0");
Bookmark Organization
The sample creates a professional structure:
📖 Introduction
📖 Getting Started
└─ Installation
└─ Quick Start
└─ Configuration
📖 Core Features
└─ Text & Typography
└─ Layout Containers
└─ Tables
└─ Images & Hyperlinks
📖 Advanced Topics
└─ Multi-Page Documents
└─ Custom Styling
└─ Performance Tips
📖 Appendix
└─ API Reference
└─ Sample Code
└─ Migration Guide
Sample Page Structure
Page 1: Introduction
- Title: "Introduction"
- Content: What TerraPDF is, why it matters
- Topics: Getting Started overview
Page 2: Getting Started
- Installation instructions via NuGet
- Quick start example
- Configuration guide
Page 3: Core Features - Text & Typography
- Text and typography options
- Layout containers (Column, Row, Table)
- Images and hyperlinks
Page 4: Core Features - Tables & Decorators
- Table structure and configuration
- Decorators (Padding, Margin, Background, Border)
- Styling patterns
Page 5: Advanced Topics
- Multi-page documents and pagination
- Custom styling patterns
- Performance optimization tips
Page 6: Appendix
- API reference overview
- Sample code blocks
- Migration guide from v1.x to v2.0
Use Cases
Ideal for:
- Technical documentation — API guides, developer manuals
- User manuals — with navigable sections
- Annual reports — with executive summary navigation
- Educational materials — textbooks with chapters
- Legal documents — contracts with sections and clauses
- Policy documents — with hierarchical structure
What You'll Learn
- Bookmark creation — adding navigation entries
- Hierarchy — parent-child relationships
- Page positioning — linking to specific locations
- Multi-page structure — organizing complex documents
- Metadata — document-level information
- Professional formatting — headers and footers
- Content organization — logical document flow
Bookmark Best Practices
- Hierarchy — Use 2-3 levels maximum for clarity
- Descriptive titles — Clear bookmark names
- Consistent naming — Use consistent title patterns
- Page coverage — Create bookmarks for major sections
- Accessibility — Bookmarks aid navigation for all readers
File Output
Generates: 08_report_with_bookmarks.pdf
Creates a comprehensive developer guide with professional structure and easy navigation through bookmarks visible in the PDF viewer's outline/bookmark panel.