Composables
nuxt-pdf exposes multiple composables, that you can access to easily create pdfs through vue code.
Options
Both of our composables, accept 2 seperate configuration options.
- The documentOptions, allow you to customize the general layout of your document. You can find the options here.
- The htmlOptions, allow you to customize the conversion of your HTML to a canvas. You can find the options here.
exportToPDF
exportToPDF allows you to usea native vue ref, to target either a native HTML element, or a Vue component, which will then be converted into a PDF.
The composable accepts 4 parameters:
- The fileName
- The component you wish to convert
- The documentOptions
- The HTMLOptions.
To learn more about the options, please refer here
<script setup lang="ts">const pdfSection = ref<HTMLElement | null>(null)const DOCUMENT_OPTIONS = {} // See all options: http://raw.githack.com/MrRio/jsPDF/master/docs/jsPDF.htmlconst HTML_OPTIONS = {} // See all options: http://raw.githack.com/MrRio/jsPDF/master/docs/module-html.html#~htmlconst export = () => {  await exportToPDF('FILE_NAME.pdf', pdfSection, DOCUMENT_OPTIONS, HTML_OPTIONS)}</script><template>  <div ref="pdfSection">    <h1>Hello world!</h1>  </div></template>Tips & Tricks
- Ensure that the section you want to export has a fixed width, to ensure the layout does not shift when exporting
- Setting a fixed width and height, to match your document size, will lead to better results
- Use the scaleoption in the document section, to slightly increase or decrease the size of the rendered html
- Optimize your HTML to reduce the PDF file size
htmlToPDF
htmlToPdf allows you to pass an HTML string and format it into a PDF. This can allow you to futhur customize the behaviour of how the module interacts with your UI.
import { htmlToPdf } from '#imports'const openInWindow = async (HTMLElement: HTMLElement) => {  const pdf = await htmlToPdf(HTMLElement,    undefined,    {      html2canvas: {        scale: 0.7,        useCORS: true      }    })  const totalPages = pdf.getNumberOfPages()  const pdfHeight = pdf.getPageHeight()  await pdf.html('<b>I am a custom pdf!!!</b>', {    x: 20,    y: (pdfHeight - 50) * totalPages // place in the bottom  })  const blob = pdf.output('blob')  window.open(URL.createObjectURL(blob), '_blank')}Table of Contents