
Lab Report (Certificate of Analysis) — rendered output
data.json first; keep at most one flagged row per the accent policy. Caveat: spec limits are written in the set’s “max” idiom (“1.3 max”), not ”≤” — the bundled Unicode fallback font does not cover the math-operator block, and the engine reports any such uncovered glyph as a render defect; register a font containing it if you need the symbol form.
Engine features exercised: solid accent tab via flex shrink-wrap, per-cell flagged styling in a data table, three-slot signature row, single-page fill.
Render it:
npx @formepdf/html templates/lab-report/index.html -o lab-report.pdf
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Certificate of analysis LAB-2026-11408 — Northmoor Analytical Laboratory</title>
<link rel="stylesheet" href="../northmoor-shared.css">
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="sheet">
<div class="pagefill">
<header>
<div class="atop"></div>
<div class="hd">
<div class="mast-left">
<div class="mark">N</div>
<div>
<div class="wm">Northmoor</div>
<div class="sub" style="margin-top: 3pt">Analytical Laboratory · ISO/IEC 17025</div>
</div>
</div>
<div class="addr" style="text-align: right">2200 Lyell Avenue<br>Rochester, NY 14606<br>Accreditation 4471-01 · lab@northmoorgroup.com</div>
</div>
<div class="hr2" style="margin-top: 15pt"></div>
<div class="dochead">
<div>
<div class="lbl lbl-accent" style="margin-bottom: 7.5pt">Analytical laboratory · ISO/IEC 17025 accredited</div>
<h1 class="dtitle">Certificate of analysis</h1>
</div>
<div style="text-align: right">
<div class="lbl" style="margin-bottom: 5.25pt">Report number</div>
<div class="refnum">LAB-2026-11408</div>
<div class="rowend" style="margin-top: 6.75pt"><div class="tab">Final</div></div>
</div>
</div>
</header>
<div class="meta meta-lab">
<div><div class="lbl">Client</div>Kestrel Medical Center<br>Central Sterile Processing<br>1465 Whitmore Parkway<br>Cleveland, OH 44106</div>
<div><div class="lbl">Sample</div>Reverse osmosis water, post-polish<br>Point of use, sterilizer 3<div class="lbl" style="margin-top: 9pt">Sample ID</div>KMC-RO-0904-03</div>
<div><div class="lbl">Collected</div>04 Sep 2026, 09:40 EDT<br>By D. Whitcomb, in duplicate<div class="lbl" style="margin-top: 9pt">Received</div>04 Sep 2026, 15:12 EDT</div>
<div><div class="lbl">Analysis</div>05–06 Sep 2026<div class="lbl" style="margin-top: 9pt">Reported</div>07 Sep 2026<div class="lbl" style="margin-top: 9pt">Purchase order</div>KMC-PO-88214</div>
</div>
<h2 class="sh">Results</h2>
<table class="t">
<thead><tr><th scope="col" style="width: 25.5pt">No.</th><th scope="col">Analyte</th><th scope="col" style="width: 55.5pt">Method</th><th scope="col" class="num" style="width: 58.5pt">Result</th><th scope="col" style="width: 42pt">Unit</th><th scope="col" class="num" style="width: 78pt">Reference range</th><th scope="col" style="width: 49.5pt">Assessment</th></tr></thead>
<tbody>
<tr><td>1</td><td>pH at 25 °C</td><td>SM 4500-H+</td><td class="num">6.8</td><td>pH</td><td class="num">6.5 – 8.5</td><td>Within</td></tr>
<tr><td>2</td><td>Conductivity</td><td>SM 2510 B</td><td class="num">0.9</td><td>µS/cm</td><td class="num">1.3 max</td><td>Within</td></tr>
<tr><td>3</td><td>Total organic carbon</td><td>SM 5310 C</td><td class="num">0.31</td><td>mg/L</td><td class="num">0.50 max</td><td>Within</td></tr>
<tr><td>4</td><td>Total hardness as CaCO₃</td><td>SM 2340 C</td><td class="num">< 1.0</td><td>mg/L</td><td class="num">1.0 max</td><td>Within</td></tr>
<tr><td>5</td><td>Chloride</td><td>EPA 300.0</td><td class="num">0.42</td><td>mg/L</td><td class="num">1.00 max</td><td>Within</td></tr>
<tr><td>6</td><td>Iron, total</td><td>EPA 200.7</td><td class="num">0.014</td><td>mg/L</td><td class="num">0.050 max</td><td>Within</td></tr>
<tr><td>7</td><td>Heterotrophic plate count, 48 h</td><td>SM 9215 B</td><td class="num flag flagval">138</td><td>CFU/mL</td><td class="num">100 max</td><td class="flag">Exceeds</td></tr>
<tr><td>8</td><td>Bacterial endotoxin</td><td>USP <85> LAL</td><td class="num">0.06</td><td>EU/mL</td><td class="num">0.25 max</td><td>Within</td></tr>
</tbody>
</table>
<h2 class="sh">Interpretation and recommendation</h2>
<div class="prose measure82">
<p>Seven of eight analytes are within the reference ranges specified for sterilizer feed water at this facility. The heterotrophic plate count of 138 CFU/mL exceeds the action limit of 100; the duplicate returned 129, so the result is reliable rather than a plating artefact. Endotoxin remains well within limit, consistent with biofilm in the distribution loop rather than a breach of the membrane.</p>
<p>We recommend sanitisation of the loop downstream of the polish cartridge, replacement of the point-of-use filter at sterilizer 3, and resampling at two points after seventy-two hours. Sterilizer 3 need not be withdrawn from service on this result alone; the resample should be treated as urgent.</p>
</div>
<div class="sig sig-tight">
<div class="sigbox"><div class="lbl">Analyst</div><div class="sigline">J. Osei-Bonsu · Chemist</div></div>
<div class="sigbox"><div class="lbl">Approved by</div><div class="sigline">P. N. Raghunathan · Laboratory Manager</div></div>
<div class="sigbox sig-narrow"><div class="lbl">Date of issue</div><div class="sigline">07 September 2026</div></div>
</div>
<div class="pagefill-spacer"></div>
<footer class="foot">
<div style="flex-grow: 1">Results relate only to the items tested. This report may not be reproduced except in full without the laboratory's written approval. Measurement uncertainty on request; samples retained thirty days.</div>
<div>LAB-2026-11408</div>
</footer>
</div>
</div>
</body>
</html>
/* lab-report — certificate of analysis with reference ranges.
* Accent policy (lab): one solid accent tab (the Final status) and the
* single flagged out-of-range result — bold and captioned, never colour
* alone. */
@page {
size: Letter;
margin: 52.5pt 57pt 40.5pt;
@bottom-left {
content: "Certificate of analysis LAB-2026-11408 · Kestrel Medical Center";
font-family: Helvetica, Arial, sans-serif;
font-size: 5.625pt;
letter-spacing: 0.14em;
text-transform: uppercase;
color: #8A857E;
}
@bottom-right {
content: "Page " counter(page) " of " counter(pages);
font-family: Helvetica, Arial, sans-serif;
font-size: 5.625pt;
letter-spacing: 0.14em;
text-transform: uppercase;
color: #8A857E;
}
}
.sheet { position: relative; }
.atop { position: absolute; top: -52.5pt; left: -57pt; right: -57pt; height: 3pt; background-color: #7B2233; }
.meta-lab { grid-template-columns: 1.2fr 1fr 1fr 1fr; }
.flagval { font-family: Georgia, 'Times New Roman', serif; font-weight: 400; font-size: 11.25pt; line-height: 1; }
.sig-tight { margin-top: 16.5pt; }
.sig-tight .sigline { margin-top: 10.5pt; }
.sig-narrow { flex-grow: 0.6; }
northmoor-shared.css alongside them — the set’s shared spine (type scale, tables, signature blocks, the accent).
Sample data (data.json)
Sample data (data.json)
data.json
{
"reportNumber": "LAB-2026-11408",
"status": "Final",
"client": {
"name": "Kestrel Medical Center",
"department": "Central Sterile Processing",
"address": "1465 Whitmore Parkway, Cleveland, OH 44106"
},
"sample": {
"description": "Reverse osmosis water, post-polish",
"point": "Point of use, sterilizer 3",
"id": "KMC-RO-0904-03",
"collected": "04 Sep 2026, 09:40 EDT",
"collectedBy": "D. Whitcomb, in duplicate",
"received": "04 Sep 2026, 15:12 EDT",
"analysis": "05–06 Sep 2026",
"reported": "07 Sep 2026",
"purchaseOrder": "KMC-PO-88214"
},
"results": [
{
"no": 1,
"analyte": "pH at 25 °C",
"method": "SM 4500-H+",
"result": 6.8,
"unit": "pH",
"range": "6.5 – 8.5",
"assessment": "Within"
},
{
"no": 2,
"analyte": "Conductivity",
"method": "SM 2510 B",
"result": 0.9,
"unit": "µS/cm",
"range": "≤ 1.3",
"assessment": "Within"
},
{
"no": 3,
"analyte": "Total organic carbon",
"method": "SM 5310 C",
"result": 0.31,
"unit": "mg/L",
"range": "≤ 0.50",
"assessment": "Within"
},
{
"no": 4,
"analyte": "Total hardness as CaCO₃",
"method": "SM 2340 C",
"result": "< 1.0",
"unit": "mg/L",
"range": "≤ 1.0",
"assessment": "Within"
},
{
"no": 5,
"analyte": "Chloride",
"method": "EPA 300.0",
"result": 0.42,
"unit": "mg/L",
"range": "≤ 1.00",
"assessment": "Within"
},
{
"no": 6,
"analyte": "Iron, total",
"method": "EPA 200.7",
"result": 0.014,
"unit": "mg/L",
"range": "≤ 0.050",
"assessment": "Within"
},
{
"no": 7,
"analyte": "Heterotrophic plate count, 48 h",
"method": "SM 9215 B",
"result": 138,
"unit": "CFU/mL",
"range": "≤ 100",
"assessment": "Exceeds",
"flagged": true,
"duplicate": 129
},
{
"no": 8,
"analyte": "Bacterial endotoxin",
"method": "USP <85> LAL",
"result": 0.06,
"unit": "EU/mL",
"range": "≤ 0.25",
"assessment": "Within"
}
],
"signatories": [
{
"role": "Analyst",
"name": "J. Osei-Bonsu · Chemist"
},
{
"role": "Approved by",
"name": "P. N. Raghunathan · Laboratory Manager"
},
{
"role": "Date of issue",
"name": "07 September 2026"
}
]
}
MIT-licensed, free to copy — source on GitHub. Passes PDF/UA-1 validation (veraPDF) in CI; validation is a floor, not a certification.