Skip to content

Browser Usage

Option 1: Bundler (Vite/Webpack/Rollup)

ts
import { jsPDF } from 'jspdf'
import 'jspdf-autotable'
import { MdTextRender } from 'jspdf-md-renderer'

Option 2: UMD Script Tags

html
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/jspdf@latest/dist/jspdf.umd.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/jspdf-autotable@latest/dist/jspdf.plugin.autotable.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/jspdf-md-renderer@latest/dist/index.umd.js"></script>
html
<script>
  const { jsPDF } = window.jspdf
  const { MdTextRender } = window.JspdfMdRenderer

  ;(async () => {
    const doc = new jsPDF({ unit: 'mm', format: 'a4' })
    await MdTextRender(doc, '# Hello from the browser!', {
      page: { margin: { top: 20, right: 20, bottom: 20, left: 20 } },
      font: { regular: { name: 'helvetica', style: 'normal' } },
    })
    doc.save('browser-output.pdf')
  })()
</script>

Browser Security Note

If you enable security.enabled, be aware that DNS-based IP checks cannot run in a browser runtime. When that happens the render reports an SSRF_CHECKS_UNAVAILABLE warning on its result, so the gap is visible rather than assumed. For strict SSRF protection, route remote image loading through a trusted server-side proxy.

Common Output Methods

  • doc.save('file.pdf')
  • doc.output('dataurlnewwindow')
  • doc.output('blob')
  • doc.output('arraybuffer')

Released under the MIT License.