@@ -25,16 +36,21 @@ That's it! You can now begin exporting Nuxt 3 components to PDF. For example:
+```
-
-```
+Or use our server side code based approch to define your design! You can learn more about using `nuxt-pdf` on the server side [here](/nuxt-pdf/server-side).
-We offer two separate options parameters, that allow you to customize your pdf export.
+```ts
+// file: ~/server/api/pdf/my-pdf.vue
+import { createPDF, streamReturnPDF } from '#pdf'
+
+export default eventHandler(async (event) => {
+ const pdf = createPDF()
+ pdf.text('Welcome to NuxtPDF!')
+ pdf.end()
-- The `documentOptions`, allow you to customize the general layout of your document. You can find the options [here](http://raw.githack.com/MrRio/jsPDF/master/docs/jsPDF.html).
-- The `htmlOptions`, allow you to customize the conversion of your HTML to a canvas. You can find the options [here](http://raw.githack.com/MrRio/jsPDF/master/docs/module-html.html#~html).
+ return streamReturnPDF(event, pdf)
+})
+```
diff --git a/docs/content/1.getting-started/4.composables.md b/docs/content/1.getting-started/4.composables.md
deleted file mode 100644
index 5af26c4..0000000
--- a/docs/content/1.getting-started/4.composables.md
+++ /dev/null
@@ -1,46 +0,0 @@
-# Composables
-
-`nuxt-pdf` exposes multiple composables, that you can access to easily create pdfs through vue code.
-
-
-## exportToPDF
-
-Through this composable you can directly reference a HTML element, which will then be exported to a PDF.
-
-```ts
-import { exportToPDF } from '#imports'
-
-const pdfSection = ref
(null)
-
-const DOCUMENT_OPTIONS = {} // See all options: http://raw.githack.com/MrRio/jsPDF/master/docs/jsPDF.html
-const HTML_OPTIONS = {} // See all options: http://raw.githack.com/MrRio/jsPDF/master/docs/module-html.html#~html
-
-await exportToPDF('FILE_NAME.pdf', pdfSection, DOCUMENT_OPTIONS, HTML_OPTIONS)
-```
-
-## 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.
-
-```ts
-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('I am a custom pdf!!!', {
- x: 20,
- y: (pdfHeight - 50) * totalPages // place in the bottom
- })
- const blob = pdf.output('blob')
- window.open(URL.createObjectURL(blob), '_blank')
-}
-```
diff --git a/docs/content/1.getting-started/5.getting-help.md b/docs/content/1.getting-started/4.getting-help.md
similarity index 100%
rename from docs/content/1.getting-started/5.getting-help.md
rename to docs/content/1.getting-started/4.getting-help.md
diff --git a/docs/content/2.application-side/4.composables.md b/docs/content/2.application-side/4.composables.md
new file mode 100644
index 0000000..360cfac
--- /dev/null
+++ b/docs/content/2.application-side/4.composables.md
@@ -0,0 +1,75 @@
+# 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](http://raw.githack.com/MrRio/jsPDF/master/docs/jsPDF.html).
+- The `htmlOptions`, allow you to customize the conversion of your HTML to a canvas. You can find the options [here](http://raw.githack.com/MrRio/jsPDF/master/docs/module-html.html#~html).
+
+
+## `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](#options)
+
+```vue
+
+
+
+
+
Hello world!
+
+
+```
+
+### 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 `scale` option 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.
+
+```ts
+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('I am a custom pdf!!!', {
+ x: 20,
+ y: (pdfHeight - 50) * totalPages // place in the bottom
+ })
+ const blob = pdf.output('blob')
+ window.open(URL.createObjectURL(blob), '_blank')
+}
+```
diff --git a/docs/content/2.application-side/_dir.yml b/docs/content/2.application-side/_dir.yml
new file mode 100644
index 0000000..201d148
--- /dev/null
+++ b/docs/content/2.application-side/_dir.yml
@@ -0,0 +1,2 @@
+title: Application-Side
+icon: heroicons-outline:computer-desktop
diff --git a/docs/content/3.server-side/_dir.yml b/docs/content/3.server-side/_dir.yml
new file mode 100644
index 0000000..06a72e8
--- /dev/null
+++ b/docs/content/3.server-side/_dir.yml
@@ -0,0 +1,2 @@
+title: Server-Side
+icon: heroicons-outline:computer-desktop