PDF · C# walkthrough
PDF reading list with clickable resources
Share a reading list that explains why each destination matters and remains useful when printed.
- Start with
- Resource names, destinations and usage notes
- Generate

How it works
Use descriptive link labels
Add a paragraph link with a name that tells readers what they will open.
Attach links to table cells
Keep the resource descriptions in a table and map selected cells to their URI targets with TableWithLinks.
Include a reporting checklist
Explain which input, version and expected result a team should collect when reporting a problem.
The C# source
This is the complete example file used to generate the download. The walkthrough runner creates the output directory and produces the additional previews.
using OfficeIMO.Pdf;
namespace OfficeIMO.Examples.Showcase.Workflows;
/// <summary>Builds a PDF reading list with descriptive paragraph and table hyperlinks.</summary>
internal static class LinkedResourceGuide {
internal static void Create(string folder) {
PdfColor navy = PdfColor.FromRgb(23, 54, 93);
string repository = "https://github.com/EvotecIT/OfficeIMO";
string[][] rows = {
new[] { "Resource", "Use it for" },
new[] { "Source repository", "Browse code, examples and package READMEs." },
new[] { "Published releases", "Read release notes and inspect release assets." },
new[] { "Issue tracker", "Search known problems before filing a reproducible report." }
};
var links = new Dictionary<(int Row, int Col), string> {
[(1, 0)] = repository,
[(2, 0)] = repository + "/releases",
[(3, 0)] = repository + "/issues"
};
PdfDocument.Create(pdf => pdf.Content(content => content
.H1("Document automation reading list", PdfAlign.Left, navy)
.Paragraph(p => p.Text("A compact PDF reference for a team starting a document-generation workflow."))
.H2("Start with a runnable example", PdfAlign.Left, navy)
.Paragraph(p => p.Text("Open the ").Link("OfficeIMO examples directory", repository + "/tree/master/OfficeIMO.Examples")
.Text(" and choose a format close to your intended output. Keep the generated file alongside its input data."))
.H2("Keep these references close", PdfAlign.Left, navy)
.TableWithLinks(rows, links, style: new PdfTableStyle {
HeaderFill = navy, HeaderTextColor = PdfColor.White, HeaderRowCount = 1,
RowStripeFill = PdfColor.FromRgb(241, 245, 249), CellPaddingX = 9, CellPaddingY = 11
})
.H2("When reporting a problem", PdfAlign.Left, navy)
.Bullets(new[] {
"Include the smallest input that reproduces the issue.",
"State the package version, target framework and operating system.",
"Describe the expected result and attach a safe sample of the actual output."
})
.Paragraph(p => p.Text("The resource names are clickable annotations. A static image shows their labels; open the PDF to follow them."))),
new PdfOptions { DefaultFontSize = 11 })
.Meta(title: "Document automation reading list", author: "OfficeIMO")
.Save(Path.Combine(folder, "example.pdf"));
}
}
Open the C# source fileRun it from the source checkout
Clone the OfficeIMO repository and run this command from its root with the .NET 10 SDK. The first run restores the example project's dependencies.
dotnet run --project OfficeIMO.Examples -f net10.0 -- --showcase-workflows --showcase-example pdf-linked-resource-guideThe files are written to OfficeIMO.Examples/bin/Debug/net10.0/Documents/Workflows/pdf-linked-resource-guide/. To use the example in your application, start with the PDF guide and its package setup.
Downloads and scope
What the preview shows
The linked C# example generates this file. The page images are rendered from the downloadable PDF with Poppler. Interactive structures are inspected separately from the static preview.
What to keep in mind
The PDF contains external link annotations. The image shows their labels and layout; it does not demonstrate navigation or guarantee future availability of external pages.