PDF templates / Civic / Government

Notice of Public Hearing

Municipal notice of public hearing derived from published US and Canadian hearing notices: masthead with hearing meta box, proposal summary, property and request details, numbered participation steps with comment deadline and accommodation note, and publication certification with clerk sign-off. Renders as a tagged PDF/A-2A + PDF/UA-1 document.

First page of the Notice of Public Hearing template, rendered with its sample data
hearing-notice.pdfpage 1 of 2

DSL source

The whole template. Learn the language in the template DSL guide.

js
const template = doc(
  { size: "Letter", title: "{{jurisdiction}} Notice of Public Hearing — {{caseNumber}}", padding: [36, 40, 36, 40],
    styles: {
      ".masthead":     { "font-family": "Inter", "font-size": 20, "font-weight": "bold", color: "#0b3d91", "margin": [0, 0, 2, 0] },
      ".doc-kind":     { "font-family": "Inter", "font-size": 13, "font-weight": "bold", color: "#1a1a1a", "margin": [0, 0, 2, 0] },
      ".doc-line":     { "font-family": "Inter", "font-size": 10, color: "#333", "line-height": 1.4 },
      ".meta-label":   { "font-family": "Inter", "font-size": 8, "font-weight": "bold", color: "#555" },
      ".meta-value":   { "font-family": "Inter", "font-size": 9.5, color: "#1a1a1a" },
      ".notice-box":   { "background-color": "#f0f4fa", "border": [1, 1, 1, 1], "border-color": "#0b3d91", padding: [8, 10, 8, 10] },
      ".notice-text":  { "font-family": "Inter", "font-size": 9, color: "#1a1a1a", "line-height": 1.45 },
      ".section-title":{ "font-family": "Inter", "font-size": 12, "font-weight": "bold", color: "#0b3d91", "border": [0, 0, 1, 0], "border-color": "#0b3d91", "padding": [0, 0, 3, 0], "margin": [0, 0, 6, 0] },
      ".body":         { "font-family": "Inter", "font-size": 9.5, color: "#1a1a1a", "line-height": 1.5 },
      ".prop-label":   { "font-family": "Inter", "font-size": 8, "font-weight": "bold", color: "#555" },
      ".prop-value":   { "font-family": "Inter", "font-size": 9.5, color: "#1a1a1a", "line-height": 1.4 },
      ".step-number":  { "font-family": "Inter", "font-size": 10, "font-weight": "bold", color: "#0b3d91" },
      ".step-text":    { "font-family": "Inter", "font-size": 9.5, color: "#1a1a1a", "line-height": 1.45 },
      ".cert":         { "font-family": "Inter", "font-size": 9, color: "#333", "line-height": 1.5 },
      ".sig-name":     { "font-family": "Inter", "font-size": 10, "font-weight": "bold", color: "#1a1a1a", "margin": [0, 0, 0, 0] },
      ".sig-title":    { "font-family": "Inter", "font-size": 9, color: "#444", "margin": [0, 0, 0, 0] },
    },
  },

  // Masthead
  s(".masthead", "{{jurisdiction}}"),
  s(".doc-kind", "Notice of Public Hearing — {{hearingBody}}"),
  s(".doc-line", "{{caseNumber}} — {{subject}}"),
  gap(8),

  // Hearing meta box
  r({ "border": [1, 1, 1, 1], "border-color": "#0b3d91", padding: [8, 10, 8, 10] },
    col("50%",
      s(".meta-label", "HEARING DATE / TIME"),
      s(".meta-value", "{{hearingDate}} at {{hearingTime}}"),
      gap(4),
      s(".meta-label", "LOCATION"),
      s(".meta-value", "{{location}}"),
    ),
    col("50%",
      s(".meta-label", "CASE NUMBER"),
      s(".meta-value", "{{caseNumber}}"),
      gap(4),
      s(".meta-label", "PUBLISHED"),
      s(".meta-value", "{{publishedAt}}"),
    ),
  ),
  gap(8),

  // Proposal summary
  r({ class: "notice-box" },
    col("100%", s(".notice-text", "{{proposal}}")),
  ),
  gap(10),

  // Property details
  s(".section-title", "Property and Request"),
  r({ grid: ["130pt", "1fr"], "margin": [0, 0, 4, 0] },
    col(s(".prop-label", "ADDRESS")),
    col(s(".prop-value", "{{propertyAddress}}")),
  ),
  r({ grid: ["130pt", "1fr"], "margin": [0, 0, 4, 0] },
    col(s(".prop-label", "APPLICANT")),
    col(s(".prop-value", "{{applicant}}")),
  ),
  r({ grid: ["130pt", "1fr"], "margin": [0, 0, 4, 0] },
    col(s(".prop-label", "CURRENT / PROPOSED")),
    col(s(".prop-value", "{{currentZoning}} to {{proposedZoning}}")),
  ),
  r({ grid: ["130pt", "1fr"], "margin": [0, 0, 0, 0] },
    col(s(".prop-label", "REQUEST")),
    col(s(".prop-value", "{{request}}")),
  ),
  gap(4),
  s(".body", "{{description}}"),
  gap(10),

  // How to participate
  s(".section-title", "How to Participate"),
  each("step in steps",
    r({ grid: ["24pt", "1fr"], "margin": [0, 0, 4, 0] },
      col(s(".step-number", "{{step.number}}")),
      col(s(".step-text", "{{step.text}}")),
    ),
  ),
  gap(4),
  s(".body", "{{commentDeadline}}"),
  gap(4),
  s(".body", "{{accommodation}}"),
  gap(8),

  // Publication + sign-off
  s(".cert", "{{certification}}"),
  gap(8),
  s(".sig-name", "{{clerkName}}"),
  s(".sig-title", "City Clerk, {{jurisdiction}}"),

  ftrPages("{{jurisdiction}} Notice of Public Hearing {{caseNumber}}"),
);

const sampleData = {
  jurisdiction: "City of Riverton",
  hearingBody: "Planning Commission",
  caseNumber: "Case Z-25-09",
  subject: "Rezoning of 1200 Mill Road from R-2 to MU-N",
  hearingDate: "21 October 2025",
  hearingTime: "7:00 PM",
  location: "Riverton City Hall, Council Chambers, 450 Civic Center Drive",
  publishedAt: "3 October 2025 in the Riverton Gazette and on the City website",
  proposal: "The Riverton Planning Commission will hold a public hearing on a request to rezone 1200 Mill Road (Assessor's Parcel 042-118-07, 2.4 acres) from R-2 (Low-Density Residential) to MU-N (Mixed-Use Neighborhood) to allow a three-storey building with ground-floor retail and twelve apartments above. The Commission will take public testimony and forward a recommendation to the City Council.",
  propertyAddress: "1200 Mill Road, Riverton (Assessor's Parcel 042-118-07, 2.4 acres)",
  applicant: "Mill Road Partners LLC, 88 Depot Street, Riverton",
  currentZoning: "R-2 (Low-Density Residential)",
  proposedZoning: "MU-N (Mixed-Use Neighborhood)",
  request: "Map amendment plus a conditional-use permit for ground-floor retail in the MU-N district",
  description: "The site is currently a vacant lot on the north side of Mill Road between Elm Street and the rail crossing. Surrounding uses are single-family homes to the north, the Elm Street commercial frontage to the south, and the water-treatment plant buffer to the east. Staff analysis finds the request consistent with the General Plan's Neighborhood Mixed-Use designation for this corridor; the full staff report is available at the Planning counter and on the City website from 14 October 2025.",
  steps: [
    { number: "1", text: "Attend in person — sign up to speak when the chair calls Case Z-25-09. Speakers are limited to three minutes each." },
    { number: "2", text: "Join remotely — the hearing streams live at riverton.example.gov/meetings with call-in instructions posted the Friday before." },
    { number: "3", text: "Write in — email planning@riverton.example.gov or mail the Planning Division, 450 Civic Center Drive, Riverton, so it arrives before the deadline below." },
  ],
  commentDeadline: "Written comments must arrive by 12:00 noon on 20 October 2025 to be included in the staff packet; later comments are accepted at the hearing and entered into the record.",
  accommodation: "To request disability-related accommodation or language assistance, contact the City Clerk at (555) 014-2800 at least 48 hours before the hearing.",
  certification: "I certify that this notice was published in the Riverton Gazette on 3 October 2025, posted at Riverton City Hall, and mailed to all property owners within 500 feet of the subject property on 2 October 2025. — D. Reyes, City Clerk",
  clerkName: "D. Reyes",
};

Sample data

json
{
  "jurisdiction": "City of Riverton",
  "hearingBody": "Planning Commission",
  "caseNumber": "Case Z-25-09",
  "subject": "Rezoning of 1200 Mill Road from R-2 to MU-N",
  "hearingDate": "21 October 2025",
  "hearingTime": "7:00 PM",
  "location": "Riverton City Hall, Council Chambers, 450 Civic Center Drive",
  "publishedAt": "3 October 2025 in the Riverton Gazette and on the City website",
  "proposal": "The Riverton Planning Commission will hold a public hearing on a request to rezone 1200 Mill Road (Assessor's Parcel 042-118-07, 2.4 acres) from R-2 (Low-Density Residential) to MU-N (Mixed-Use Neighborhood) to allow a three-storey building with ground-floor retail and twelve apartments above. The Commission will take public testimony and forward a recommendation to the City Council.",
  "propertyAddress": "1200 Mill Road, Riverton (Assessor's Parcel 042-118-07, 2.4 acres)",
  "applicant": "Mill Road Partners LLC, 88 Depot Street, Riverton",
  "currentZoning": "R-2 (Low-Density Residential)",
  "proposedZoning": "MU-N (Mixed-Use Neighborhood)",
  "request": "Map amendment plus a conditional-use permit for ground-floor retail in the MU-N district",
  "description": "The site is currently a vacant lot on the north side of Mill Road between Elm Street and the rail crossing. Surrounding uses are single-family homes to the north, the Elm Street commercial frontage to the south, and the water-treatment plant buffer to the east. Staff analysis finds the request consistent with the General Plan's Neighborhood Mixed-Use designation for this corridor; the full staff report is available at the Planning counter and on the City website from 14 October 2025.",
  "steps": [
    {
      "number": "1",
      "text": "Attend in person — sign up to speak when the chair calls Case Z-25-09. Speakers are limited to three minutes each."
    },
    {
      "number": "2",
      "text": "Join remotely — the hearing streams live at riverton.example.gov/meetings with call-in instructions posted the Friday before."
    },
    {
      "number": "3",
      "text": "Write in — email planning@riverton.example.gov or mail the Planning Division, 450 Civic Center Drive, Riverton, so it arrives before the deadline below."
    }
  ],
  "commentDeadline": "Written comments must arrive by 12:00 noon on 20 October 2025 to be included in the staff packet; later comments are accepted at the hearing and entered into the record.",
  "accommodation": "To request disability-related accommodation or language assistance, contact the City Clerk at (555) 014-2800 at least 48 hours before the hearing.",
  "certification": "I certify that this notice was published in the Riverton Gazette on 3 October 2025, posted at Riverton City Hall, and mailed to all property owners within 500 feet of the subject property on 2 October 2025. — D. Reyes, City Clerk",
  "clerkName": "D. Reyes"
}

Render it with your data

Any API key can render this template by its ID. This call uses the sample data; add a data object to use your own. See the API reference.

bash
curl -X POST https://makespdf.com/api/v1/render \
  -H "Authorization: Bearer $MAKESPDF_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"templateId": "hearing-notice"}' \
  -o output.pdf