Skip to main content

Search OfficeIMO

Enter a topic, API type, or PowerShell command.

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
PDF
Generated PDF example: PDF reading list with clickable resources
Page 1 · Generated by the example below

How it works

  1. Use descriptive link labels

    Add a paragraph link with a name that tells readers what they will open.

  2. Attach links to table cells

    Keep the resource descriptions in a table and map selected cells to their URI targets with TableWithLinks.

  3. 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 file

Run 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-guide

The 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.

PDF API reference · Artifact hashes and provenance

Continue with another example

Example source

Download source