Skip to main content

Search OfficeIMO

Enter a topic, API type, or PowerShell command.

A three-column service catalog

Present three offerings side by side without turning the whole page into a table. Each column contains its own heading, list, and guidance panel.

Start with
Three service offerings and their intended use
Generate
PDF
Generated PDF example: A three-column service catalog
Page 1 · Generated by the example below

How it works

  1. Establish a page hierarchy

    Place the main heading and short introduction above the comparison area.

  2. Use relative columns

    Create three equal relative columns and set a gutter so each offering has a distinct reading area.

  3. Keep the next decision visible

    Finish with the questions a reader should resolve before choosing an offering.

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 System.IO;
using OfficeIMO.Pdf;

namespace OfficeIMO.Examples.Showcase.Workflows;

/// <summary>Uses relative columns to present three service offerings in a single PDF.</summary>
internal static class ServiceCatalog {
    internal static void Create(string folder) {
        PdfColor navy = PdfColor.FromRgb(23, 54, 93);
        PdfDocument.Create(pdf => pdf.Content(content => {
            content.H1("Choose the support you need", PdfAlign.Left, navy);
            content.Paragraph(p => p.Text("NORTHWIND / SERVICE CATALOG"));
            content.Paragraph(p => p.Text("Three example offerings, with scope and handover expectations visible before work starts."));
            content.HR(1, navy, 12, 20);
            content.Row(row => {
                row.Gap(18);
                row.RelativeColumn(column => column
                    .H2("Essentials", PdfAlign.Left, navy)
                    .Paragraph(p => p.Bold("Keep the service running."))
                    .Bullets(new[] { "Named support contact", "Monthly health summary", "Documented escalation path" })
                    .PanelParagraph(p => p.Text("Best for a stable service with a small support queue."),
                        new PdfPanelStyle { Background = PdfColor.FromRgb(232, 241, 251), PaddingX = 10, PaddingY = 10 }));
                row.RelativeColumn(column => column
                    .H2("Improvement", PdfAlign.Left, navy)
                    .Paragraph(p => p.Bold("Reduce repeated problems."))
                    .Bullets(new[] { "Everything in Essentials", "Quarterly backlog review", "One improvement workshop" })
                    .PanelParagraph(p => p.Text("Best for a service with recurring issues and a clear owner."),
                        new PdfPanelStyle { Background = PdfColor.FromRgb(232, 246, 237), PaddingX = 10, PaddingY = 10 }));
                row.RelativeColumn(column => column
                    .H2("Transition", PdfAlign.Left, navy)
                    .Paragraph(p => p.Bold("Prepare a confident handover."))
                    .Bullets(new[] { "Readiness assessment", "Recovery walkthrough", "Receiving-team training" })
                    .PanelParagraph(p => p.Text("Best for a new service moving into regular operations."),
                        new PdfPanelStyle { Background = PdfColor.FromRgb(250, 241, 225), PaddingX = 10, PaddingY = 10 }));
            });
            content.H2("Before choosing", PdfAlign.Left, navy);
            content.Paragraph(p => p.Text("Confirm the service owner, support hours, and expected response process. These are sample offerings rather than a commercial contract."));
        }), new PdfOptions { DefaultFontSize = 10 })
            .Meta(title: "Northwind service catalog", 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-service-catalog

The files are written to OfficeIMO.Examples/bin/Debug/net10.0/Documents/Workflows/pdf-service-catalog/. 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.

What to keep in mind

The offerings are fictional sample content. The layout demonstrates fixed PDF output rather than a responsive web pricing component.

PDF API reference · Artifact hashes and provenance

Continue with another example

Example source

Download source