Correspondence and reporting / A4
Meeting minutes HTML template
Numbered agenda items with decisions pulled out of the narrative, and an actions table with an owner and a date on every row.
When this document is the right one
A meeting produced decisions that someone who was not there will need to act on. The value is entirely in the decisions and the actions, and the narrative exists to explain them.
Why each part is there
The fields are visible in the markup. What is not visible is why they are present, which is the part that gets removed first when someone adapts a template for their own use.
- Present and apologies, because a decision taken without someone present is a different kind of decision.
- Decisions pulled into their own bordered blocks rather than left inside the discussion, since that is what gets re-read.
- An actions table at the end with a number, an owner and a date on every row. An action with no owner is a wish.
- Actions carried from a previous meeting listed in the same table rather than referred to, so the table is the complete list.
- A correction window, which is what turns minutes into an agreed record rather than one person's account.
The template
A complete file. Doctype, stylesheet, body: paste it into a renderer unchanged and it produces a finished A4 page. Replace the sample data and the styling holds.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Minutes, operations meeting, 14 May 2026</title>
<style>
@page { size: A4; margin: 20mm 18mm 22mm; }
* { box-sizing: border-box; }
body { margin: 0; font: 10pt/1.55 "Helvetica Neue", Arial, sans-serif; color: #17202a;
counter-reset: item; }
header { border-bottom: 2px solid #17202a; padding-bottom: 5mm; }
h1 { margin: 0; font-size: 17pt; }
.when { color: #5b6b7c; margin-top: 1.5mm; }
.attendance { display: grid; grid-template-columns: 1fr 1fr; gap: 8mm; margin: 6mm 0;
font-size: 9pt; }
.attendance h2 { margin: 0 0 1.5mm; font-size: 7.5pt; text-transform: uppercase;
letter-spacing: 0.08em; color: #5b6b7c; }
h2.item { font-size: 11pt; margin: 7mm 0 2mm; break-after: avoid; }
h2.item::before { counter-increment: item; content: counter(item) ". "; color: #5b6b7c; }
p { margin: 0 0 3mm; }
/* Decisions and actions are the only parts of minutes anyone reads twice.
They are pulled out of the narrative rather than buried in it. */
.decision { border-left: 3px solid #17202a; padding: 1mm 0 1mm 5mm; margin: 3mm 0;
break-inside: avoid; }
.decision .k { font-size: 7.5pt; text-transform: uppercase; letter-spacing: 0.08em;
color: #5b6b7c; }
table.actions { width: 100%; border-collapse: collapse; margin-top: 6mm;
break-inside: avoid; }
thead { display: table-header-group; }
table.actions th { text-align: left; font-size: 7.5pt; text-transform: uppercase;
letter-spacing: 0.06em; color: #5b6b7c;
border-bottom: 1.5px solid #17202a; padding-bottom: 2mm; }
table.actions td { padding: 2.5mm 3mm 2.5mm 0; border-bottom: 1px solid #eef2f5;
vertical-align: top; }
table.actions tr { break-inside: avoid; }
footer { margin-top: 8mm; border-top: 1px solid #dbe2e8; padding-top: 4mm;
font-size: 8.5pt; color: #5b6b7c; break-inside: avoid; }
</style>
</head>
<body>
<header>
<h1>Operations meeting, minutes</h1>
<div class="when">Thursday 14 May 2026, 09:00 to 10:15, studio office and video</div>
</header>
<div class="attendance">
<div>
<h2>Present</h2>
E. Prentice (chair), A. Boland, S. Whitlock, D. Okafor (video)
</div>
<div>
<h2>Apologies and circulation</h2>
M. Ellery (apologies). Circulated to all of the above plus the board.
</div>
</div>
<h2 class="item">Minutes of the previous meeting</h2>
<p>
Approved without amendment. Two actions from 30 April remain open and are carried
into the table below rather than restated here.
</p>
<h2 class="item">Kiln 2 loss rate</h2>
<p>
A. Boland presented the March and April figures. Loss on the reduction glaze in
kiln 2 is running at 9.4 per cent against 5.8 per cent for the same glaze in kiln 1,
which points at the firing schedule rather than the formulation. Two weeks of
controlled cooling trials would cost about nine days of capacity.
</p>
<div class="decision">
<div class="k">Decision</div>
Approved. Trials to run from 26 May and to finish before the Ravenshill production
run starts on 08 June. If the trials are not conclusive by 05 June the run goes
ahead in kiln 1 only and the schedule slips by a week rather than the quality.
</div>
<h2 class="item">Rim detail pricing</h2>
<p>
The hand-applied rim line is quoted at 2.20 and is costing 2.90 in labour at the
current loss rate. D. Okafor argued for withdrawing it. E. Prentice noted it is the
line that wins the hospitality work and that withdrawing it changes what the studio
sells rather than what it charges.
</p>
<div class="decision">
<div class="k">Decision</div>
Deferred to the Autumn price revision. A. Boland to bring a costing that separates
the labour from the loss, so the decision is about one of them rather than both.
</div>
<h2 class="item">Any other business</h2>
<p>
S. Whitlock raised that the goods-in window is being missed by two suppliers. Handled
outside the meeting.
</p>
<table class="actions">
<thead>
<tr><th>#</th><th>Action</th><th>Owner</th><th>By</th></tr>
</thead>
<tbody>
<tr><td>1</td><td>Book kiln 2 cooling trials, 26 May to 05 June, and hold the slots</td>
<td>A. Boland</td><td>16 May</td></tr>
<tr><td>2</td><td>Costing for the rim line separating labour from loss</td>
<td>A. Boland</td><td>30 Jun</td></tr>
<tr><td>3</td><td>Confirm the Ravenshill run start date with D. Quinn in writing</td>
<td>E. Prentice</td><td>20 May</td></tr>
<tr><td>4</td><td>Carried from 30 Apr: supplier goods-in window notice</td>
<td>S. Whitlock</td><td>21 May</td></tr>
</tbody>
</table>
<footer>
These minutes are a record of decisions and actions, not a transcript. Corrections
to E. Prentice within five working days; after that they are taken as agreed and
will be approved at the next meeting.
</footer>
</body>
</html>The layout decision worth understanding
Agenda items are numbered by a CSS counter rather than typed, so inserting an item under any other business does not require renumbering everything below it. The decision blocks carry break-inside: avoid, because a decision split across a page break is the one thing in these minutes that must be readable in one piece.
The mistake people make adapting it
Writing minutes as a transcript. Nobody reads them, the decisions are buried in the discussion, and the person who has to act three weeks later cannot find their action. Minutes are a record of decisions and actions; the discussion is context and belongs in a sentence.
Rendering it
The page box is declared in the template's own CSS as A4, so the size travels with the markup rather than living in the code that calls the renderer. A4 is also one of the six named formats the API accepts, so it can be passed in the request options instead if that suits your setup better.
curl -X POST https://api.pdfpipe.xyz/v1/pdf \
-H "Authorization: Bearer $PDFPIPE_KEY" \
-H "Content-Type: application/json" \
-d '{
"html": "<!doctype html>...",
"options": { "format": "A4" }
}' \
--output meeting-minutes.pdfFrequently asked
Can I use this template commercially?
Yes. Copy it, change it, ship it. It is sample markup written to be taken, and the sample data in it is invented, so replace the names and the numbers before anyone sees it.
Why is the page size in the CSS rather than in the API call?
Because a meeting minutes is a A4 document, and that is a property of the document rather than of the code that renders it. Declaring it in the page box means the size cannot be lost between the template and the call, which is the usual way a document ends up on the wrong paper.
Will it look the same in every renderer?
The layout will, because it uses ordinary CSS. The page break behaviour will not: break-inside and break-after are implemented differently by browser engines and by dedicated print engines, and some of the paged media specification is not implemented in browser renders at all. That difference is documented per property in the paged CSS reference.
Other templates
Documents from the same part of a business, and one from each of the other groups.
Business letter HTML template with letterhead
A formal letter with a letterhead on the first page only and a recipient address positioned for a window envelope.
Multi-page PDF report HTML template
A structured report with a full-bleed cover, a contents page, automatically numbered sections and figures, and body pages that flow.
School report card HTML template
Subject rows with an attainment grade, an effort grade and a teacher comment, plus an attendance summary and a grade key on the page.
HTML invoice template with CSS
The standard commercial invoice: a demand for payment with line items, a tax figure, and terms that say when the money is due.
Payment receipt HTML template
Proof that a payment was made: the amount, the payment reference, the method, and what it was for.
Quotation HTML template with CSS
A priced proposal with a validity date, a scope, optional items kept out of the headline total, and somewhere to sign.
Packing slip HTML template
The document that goes in the box: what was ordered, what was actually shipped, and no prices at all.
Every template
The full set, grouped by what part of a business produces the document.
A4 page size for PDF generation
A4 is the default page for business documents everywhere except North America, and the default this API uses when no format is given.
Paste the template into the playground and get the PDF back. No signup, no key.