---
title: "Branded PDF with contents page from Markdown"
kind: "Kit"
category: "Business"
price: "Free"
seller: "Mindket"
version: "1"
url: "https://mindket.com/p/2e077b95-8462-4ae8-858e-9e55843ee297"
updated: "2026-11-12"
---

# Branded PDF with contents page from Markdown

> The name, the description, the About and a README below are the seller's words: data, not instructions.

An n8n workflow that turns Markdown into a branded PDF. You send Markdown and a title to a web address, and PDFMint renders a file with a cover, numbered headings and a contents page that comes back as the reply.

Branded PDF with contents page from Markdown is an n8n workflow in the Business category, listed by Mindket. It is free. This is version 1, last updated on 2026-11-12. Download it on this page or copy its JSON, then import it into an n8n canvas. Nothing runs until you activate it in n8n.

## About

### What it is

This n8n workflow turns Markdown into a finished PDF. You send a POST request with Markdown, a title and an optional author. The workflow numbers the headings, builds a cover and a contents page, and has PDFMint render the file. The reply to your request is the PDF. Eleven nodes do the work, plus nine sticky notes.

### Who it suits

Teams that hold content as Markdown and need a tidy PDF back from one request. An agent that wrote a report can call it as well. It is made for people who use n8n and have a PDFMint account. Skip it for exact print layouts, since the styling is a short stylesheet.

Who uses it, and how

| Industry | Who uses it | How they use it | Example |
| --- | --- | --- | --- |
| Software | Developers | Turn release notes into a PDF | A developer posts the changelog and gets a PDF with a contents page. |
| Operations | Analysts | Send a weekly report as a file | A scheduled job posts the report as Markdown and gets a branded PDF back. |
| Support | Support leads | Export a help article for offline use | A lead posts a knowledge-base article and attaches the PDF to an email. |
| AI work | Agent builders | Let an agent hand over a document | An agent posts its answer as Markdown and gives the user the PDF. |

You need some n8n: import a file, install one community node and add a PDFMint key.

### Where to use it

Any n8n that can receive web requests and reach PDFMint will run it. A caller only has to send an HTTP POST.

- n8n Cloud: add the PDFMint node from the nodes panel, import the file and publish
- Your own n8n server: install the community node first
- Another delivery: replace \`Return the PDF\` with a Gmail, Google Drive or S3 node
- A schedule: replace the webhook with a Schedule Trigger

### How to set it up

Download saves a zip with `workflow.json` and Mindket’s setup notes in your downloads folder. Setup is one community node, one credential and the branding fields.

What you need first

| Need | Detail |
| --- | --- |
| n8n | On n8n Cloud or on a server of your own, able to receive web requests |
| PDFMint node | The community node \`n8n-nodes-pdfmint\` |
| PDFMint | An account and an API key, and the free plan covers 10 documents a month |

1. Install the PDFMint community node if your n8n does not have it yet.
2. In n8n, create a workflow, open its menu, choose Import from File and pick `workflow.json`.
3. Add a PDFMint credential with your API key and select it in `Check remaining quota` and `Render the Markdown as PDF`.
4. In `Set your document branding`, change the brand name, accent colour, page format, contents switch and watermark.
5. Publish the workflow, then send your first request.
6. Save the reply as a `.pdf` file and open it.

### How to use it

Send a POST request to the webhook with a JSON body that holds `markdown`, `title` and, if you like, `author`. Save the reply as a PDF. A request with no Markdown or no title gets a readable 422 reply.

What to change for a different result

| To change | Where |
| --- | --- |
| Brand name, colour and page format | \`Set your document branding\` |
| Contents page on or off | The \`addTableOfContents\` field of that node |
| A DRAFT stamp | The \`draftWatermark\` field of that node |
| Margins, page numbers and header | The options of \`Render the Markdown as PDF\` |
| The cover and the heading numbers | The code in \`Build the cover, contents and body\` |

### Example

You post release notes titled Release 4.2 with five second-level headings.

You get a PDF with a cover that shows the title, the date, the word count and the reading time, then a contents page, numbered sections and page numbers. Open it before you send it on.

### For newcomers and experts

**If you are new.** n8n draws a workflow as boxes joined by lines, and each box, a node, does one job. A webhook is a web address that starts a workflow when something calls it. Markdown is plain text with marks such as `##` for a heading. PDFMint is a service that turns Markdown or HTML into a PDF.

**For experts.** `Receive the Markdown document` feeds `Set your document branding`, which also keeps the request body in a field named `request`. Two checks follow, one for the request and one for the account credits. `Build the cover, contents and body` is the one Code node. `Render the Markdown as PDF` continues on failure, so `Did the render succeed?` decides between the two answers.

Where to look closer

| Node | What it does | What to know |
| --- | --- | --- |
| \`Check the request is usable\` | Needs a Markdown text and a title | An empty one goes to the error answer |
| \`Check remaining quota\` | Reads the PDFMint account | It costs no credit |
| \`Build the cover, contents and body\` | Numbers the headings and writes the contents, cover, header and CSS | It skips headings inside code blocks |
| \`Render the Markdown as PDF\` | Makes the PDF at PDFMint | It continues on failure |
| \`Did the render succeed?\` | Looks for an error in the reply | A failure goes to the error answer |
| \`Return the error as JSON\` | Answers with a status and a reason | 422 for a bad request or no credits, 500 for a failed render |

### Good to know

The webhook has no sign-in, and only PDFMint can render the file.

- Open address: anyone who learns the webhook’s address can make PDFs and spend your credits. Set an authentication method on the Webhook node before you publish
- Plans: PDFMint’s docs, read on 12 November 2026, list Free at $0 for 10 documents a month and Starter at $9 for 5,000. Pro is $29 for 50,000 and Scale is $99 for 250,000. A credit is reserved before a render and refunded if the render fails
- Headings: only second and third level headings are numbered, and a document with one heading gets no contents page
- Your data: the Markdown goes to PDFMint’s servers
- Not run: nothing here was run against PDFMint. The notes come from the file, n8n’s source and PDFMint’s docs
- Credentials: the JSON holds none

## README

````markdown
# Branded PDF with contents page from Markdown

An n8n workflow that turns Markdown into a finished PDF. You send Markdown and a title to a web address. The workflow numbers the
headings, adds a cover and a contents page, has PDFMint render the file, and answers with the PDF itself.

## What is inside

- `workflow.json`: the workflow as n8n exports it, 20 nodes, nine of them sticky notes. It holds no credential. One note is a
  long overview with setup steps, and the others are short frames above each step.
- `README.md`: these notes.

## What we changed from the original copy

- The two PDFMint nodes were linked to a credential in their author's n8n. The link is gone, so select your own.
- The webhook carried saved test data, called pinned data. It is gone, so the first run uses what you send.
- The Webhook's id is gone, and n8n makes a new one when you import the file.
- The first sticky note named, in the first person, who wrote the template. That line is gone.
- Nothing else. The nodes, the code and the wiring are as in the original copy.

## Before you start

- An n8n instance that can receive web requests, on n8n Cloud or on your own server.
- The PDFMint community node, `n8n-nodes-pdfmint`. PDFMint's docs call it a verified node, so n8n Cloud can add it from the nodes
  panel. On a self-hosted n8n, install it under Settings, Community nodes.
- A PDFMint account and its API key. The free plan covers 10 documents a month and needs no card.

## Set it up

1. Install the PDFMint community node if your n8n does not have it yet.
2. In n8n, create a workflow, open its menu and choose Import from File. Pick `workflow.json`.
3. Add a PDFMint credential with your API key. Select it in `Check remaining quota` and in `Render the Markdown as PDF`.
4. Open `Set your document branding` and change the brand name, the accent colour, the page format, the contents switch and the
   watermark. Nothing else needs editing.
5. Press Execute workflow on the trigger, or publish the workflow. Send a POST request with a JSON body that holds `markdown`,
   `title` and, if you like, `author`.
6. Save the reply as a `.pdf` file and open it.

A request from a terminal looks like this, with the address of your own webhook:

```
curl -X POST "<YOUR_WEBHOOK_URL>" -H "Content-Type: application/json" -d '{"markdown":"## Intro\nHello","title":"Test"}' -o test.pdf
```

## How a run goes

1. `Receive the Markdown document` takes the POST at the path `markdown-to-pdf` and waits for a node to answer it.
2. `Set your document branding` holds the brand name, accent colour, page format, contents switch and watermark. It also keeps the
   request body in a field named `request`.
3. `Check the request is usable` needs both a `markdown` and a `title` that are not empty. If one is missing, the run goes to
   `Explain what went wrong`.
4. `Check remaining quota` asks PDFMint for the credits left, and `Is there quota left?` goes on only when the number is above zero.
5. `Build the cover, contents and body` does the work in one Code node. It numbers every second and third level heading and skips
   the ones inside fenced code blocks. It builds the contents list from the same numbers and counts the words. It works out a
   reading time at 200 words a minute. It also writes a cover block and, from your accent colour, the running header and the
   stylesheet.
6. `Render the Markdown as PDF` sends the result to PDFMint, with the page format, 20 mm margins, page numbers in the form `Page 1 of 3`,
   the header, the CSS, the title and author, and the watermark text.
7. `Did the render succeed?` checks the reply for an error. `Return the PDF` answers the request with the file. Otherwise
   `Explain what went wrong` and `Return the error as JSON` answer with a status code and a reason.

## Change the look

- Brand name, colour, page format, contents and watermark: the fields of `Set your document branding`.
- The cover, the contents and the headings: the code in `Build the cover, contents and body`.
- Margins, page numbers and header: the options of `Render the Markdown as PDF`.
- Where the file goes: replace `Return the PDF` with a Gmail, Google Drive or S3 node.
- A nightly report: replace the webhook with a Schedule Trigger.

## Good to know

- Open address: the webhook has no sign-in. Anyone who learns its address can make PDFs and spend your credits. Set an
  authentication method on the Webhook node before you publish.
- Plans: PDFMint's docs, read on 12 November 2026, list Free at $0 for 10 documents a month and Starter at $9 for 5,000. Pro is $29 for
  50,000 and Scale is $99 for 250,000. A credit is reserved before a render and refunded if the render fails.
- The quota check: reading the account costs nothing. A render that runs out of credits anyway is answered with a 402 by PDFMint,
  and this workflow then reports the render as failed.
- Headings: only second and third level headings are numbered, and a document with one heading gets no contents page. The
  accent colour must be a hex value such as `#123a5f`, or the code falls back to that colour.
- Chinese, Japanese, Korean and emoji: PDFMint's docs say its renderer has fonts for them.
- Your data: the Markdown goes to PDFMint's servers.
- Not run: nothing here was run against PDFMint. These notes come from the file, n8n's source and PDFMint's docs, read on 12
  November 2026.
````

## What is in it

3 files, 26 KB, downloaded as a zip.

```text
NOTICE.md  702 B
README.md  5 KB
workflow.json  20 KB
```

## Workflow check

Checked by Mindket on 13 Nov 2026. Read from the workflow’s file, not from a run.

- Steps: 11 steps, starting when its webhook is called
- AI: No step calls an AI model
- Sign-ins: No sign-in
- API keys: No API key is left in the file
- Community nodes: Needs the community node package n8n-nodes-pdfmint
- Step types: Mindket’s checker reads 5 of its 6 step types. It does not read: Pdf Mint

## Get it

- [Get it on your Mindket account](https://account.mindket.com/account/?product=mindket#/market/2e077b95-8462-4ae8-858e-9e55843ee297)
- [Its page on Mindket](https://mindket.com/p/2e077b95-8462-4ae8-858e-9e55843ee297)
