PDF · C# walkthrough
A PDF dispatch note
Generate a shareable dispatch note from logistics data. The document puts the recipient, quantities, packaging references, and receiving instructions in one printable layout.
Opens the generated download in a local browser tool. The C# example below creates the document.
- Start with
- Shipment reference, item rows, and receiving instructions
- Generate

How it works
Define the table appearance
Use a table style with a colored header, alternating row fill, and enough cell padding for item descriptions.
Compose the shipment record
Add the reference and delivery details before the item table, keeping the document easy to check during receipt.
Highlight the receiving instructions
Put the delivery note in a panel, then leave a simple receipt area and add PDF title metadata.
The C# source
The example below shows the document API and layout used for this report. Follow the PDF guide for package setup in your own project.
using System.IO;
using OfficeIMO.Pdf;
namespace OfficeIMO.Examples.Showcase.Workflows;
/// <summary>Creates a dispatch note with shipment details, item rows, and delivery instructions.</summary>
internal static class DispatchNote {
internal static void Create(string folder) {
OfficeColor muted = OfficeTheme.Default.Palette.TextMuted;
string[][] items = {
new[] { "Item", "Reference", "Quantity", "Package" },
new[] { "Laptop workstation", "NW-LT-14", "8", "Cartons 1–4" },
new[] { "USB-C docking station", "NW-DK-02", "8", "Carton 5" },
new[] { "27-inch monitor", "NW-MN-27", "8", "Cartons 6–13" }
};
PdfDocument.Create(pdf => pdf.Content(content => content
.Title("Dispatch note")
.AddParagraph(p => { p.AddText("DN-2026-0418").SetBold(); p.AddText(" · Northwind equipment services"); })
.H2("Deliver to")
.AddParagraph(p => p.AddText("Northwind Delivery Centre\nReceiving desk, Building B\nScheduled delivery: 18 September 2026"))
.AddTable(items)
.AddPanelParagraph(p => {
p.AddText("Receiving instructions\n").SetBold();
p.AddText(
"Check all 13 cartons against this note. Record visible damage before accepting the shipment.");
})
.H2("Receipt")
.Row(row => row.Gap(OfficeLength.Points(24))
.RelativeColumn(column => column.Spacer(OfficeLength.Points(28)).HR(OfficeLength.Points(0.75), muted, OfficeLength.Points(0), OfficeLength.Points(3)).AddParagraph(p => p.AddText("Received by"), color: muted), 2)
.RelativeColumn(column => column.Spacer(OfficeLength.Points(28)).HR(OfficeLength.Points(0.75), muted, OfficeLength.Points(0), OfficeLength.Points(3)).AddParagraph(p => p.AddText("Date"), color: muted), 1))
.AddParagraph(p => p.AddText("Sample logistics document. Quantities and references are demonstration data.").SetFontSize(OfficeLength.Points(9)), color: muted)),
new PdfCreateOptions { PageSetup = { Footer = { Show = true } } })
.Meta(title: "Dispatch note DN-2026-0418", author: "OfficeIMO")
.Save(Path.Combine(folder, "example.pdf"));
}
}
Open the C# source fileAPI used in this example
Use this in your project
Populate the rows from the shipment record. Keep package references and quantities together so a receiver can compare the note with the physical delivery.
The PDF guide explains package setup and related document APIs.
Documents 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 receipt area is printed text, not an interactive form or digital signature field. Sample data does not represent a real shipment.