Skip to content

jspdf-md-rendererMarkdown to PDF

Generate formatted PDFs from Markdown in browser or Node.js.

jspdf-md-rendererjspdf-md-renderer

Quick Start

bash
npm install jspdf-md-renderer jspdf jspdf-autotable marked
ts
import { jsPDF } from 'jspdf'
import { MdTextRender } from 'jspdf-md-renderer'

const doc = new jsPDF({ unit: 'mm', format: 'a4' })

const result = await MdTextRender(
  doc,
  '# Hello World\n\nRendered with **jspdf-md-renderer**!',
  {
    page: { margin: { top: 20, right: 20, bottom: 20, left: 20 } },
    font: { regular: { name: 'helvetica', style: 'normal' } },
  },
)

if (result.warnings.length) console.warn(result.warnings)
doc.save('output.pdf')

The content area is derived from the document's own page size, so the same options work on any format. See Page Geometry.

Drawing a Block Yourself

ts
await MdTextRender(doc, markdown, {
  ...options,
  components: {
    hr: (ctx) => {
      ctx.doc.setFillColor('#E2E8F0')
      ctx.doc.rect(ctx.x, ctx.y, ctx.maxWidth, 0.6, 'F')
      ctx.store.updateY(5, 'add')
    },
  },
})

See Component Overrides.

Security Example (opt-in)

ts
await MdTextRender(doc, markdown, {
  ...options,
  security: {
    enabled: true,
    violationMode: 'skip',
    allowedLinkProtocols: ['https:', 'mailto:'],
    allowedImageProtocols: ['https:'],
    blockLocalhost: true,
    blockPrivateIPs: true,
    maxMarkdownLength: 500_000,
  },
})

Released under the MIT License.