@i2d/nuxt-pdf-frame
v0.5.0
Published
nuxt-pdf-frame is a nuxt module for rendering PDF and Canvas graphics on web, using its declarative HTML syntax and semantics to outline graphical content. It leverages the I2Djs and PDFKit framework for graphics and pdf features.
Downloads
941
Maintainers
Readme
nuxt-pdf-frame
Nuxt-PDF-Frame is a Nuxt module, designed to enable the rendering of PDF and Canvas graphics within Nuxt applications. It provides a simple, template-based syntax and semantics to simplify the creation and management of graphical content. Leveraging the i2djs framework, PDF-Frame-Nuxt supports generating graphical outputs in both PDF and Canvas formats.
Features
- Declarative Syntax: Easily define PDF/Canvas graphical content using a clear and declarative syntax.
- SVG-like Syntax and Semantics: Adopts the familiar SVG tag and attribute syntax for defining geometrical shapes.
- Consistent Rendering: Provides the same syntax and semantics for rendering both PDF and Canvas outputs.
- Auto Pagination: Content overflow is taken care by the engine by spawning new pages, ensuring the document's integrity and readability.
- Multi-page Support: Create multi-page PDF documents seamlessly.
- Animations & Events: Easy way to define the animations and events on elements in canvas context.
- Nuxt 3 Compatible module.
Documentation
Playground
- Try examples on Stackblitz
Quick Setup
Installation
# Using pnpm
pnpm add @i2d/nuxt-pdf-frame
# Using yarn
yarn add @i2d/nuxt-pdf-frame
# Using npm
npm install @i2d/nuxt-pdf-frame
Integration
Add @i2d/nuxt-pdf-frame
module to the nuxt.config.js.
export default defineNuxtConfig({
modules: [
'@i2d/nuxt-pdf-frame'
]
})
Usage
Canvas Template
<pdfFrame type="canvas" width="595" height="841">
<i-g :transform="{ translate: [100, 200], scale: [2, 3], rotate: [ 45, 0, 0] }">
<i-text :x="30" :y="60" :text="'Page 1 Title'" :width="530" :style="{font: '25px Arial', align: 'center'}"></i-text>
<i-rect :x="30" :y="100" :width="535" :height="700" :style="{ fillStyle:'#f0f0f0' }"></i-rect>
<i-image src="src/assets/i2d-frame.svg" :width="200" :x="175" :y="100"></i-image>
</i-g>
</pdfFrame>
PDF Basic Template
<pdfFrame type="pdf" width="595" height="841">
<i-g :transform="{ translate: [100, 200], scale: [2, 3], rotate: [ 45, 0, 0] }">
<i-text :x="30" :y="60" :text="'Page 1 Title'" :width="530" :style="{font: '25px Arial', align: 'center'}"></i-text>
<i-rect :x="30" :y="100" :width="535" :height="700" :style="{ fillStyle:'#f0f0f0' }"></i-rect>
<i-image src="src/assets/i2d-frame.svg" :width="200" :x="175" :y="100"></i-image>
</i-g>
</pdfFrame>
PDF Multi-Page Template
<pdfFrame type="pdf" width="595" height="841">
<!-- Page Templates -->
<i-page-template id="temp-1">
<i-rect :x="0" :y="0" :width="595" :height="841" :style="{ fillStyle:'#ffffff' }"></i-rect>
<i-text :x="30" :y="30" :text="'Header Text'" :width="530" :style="{font: '15px Arial'}"></i-text>
<i-text :x="30" :y="810" :text="'Footer Text'" :width="530" :style="{font: '15px Arial'}"></i-text>
</i-page-template>
<!-- Page 1 -->
<i-page p-template="temp-1">
<i-g :transform="{ translate: [100, 200], scale: [2, 3], rotate: [ 45, 0, 0] }">
<i-text :x="30" :y="60" :text="'Page 1 Title'" :width="530" :style="{font: '25px Arial', align: 'center'}"></i-text>
<i-rect :x="30" :y="100" :width="535" :height="700" :style="{ fillStyle:'#f0f0f0' }"></i-rect>
</i-g>
</i-page>
<!-- Page 2 -->
<i-page p-template="temp-1">
<i-text :x="30" :y="60" :text="'Page 2 Title'" :width="530" :style="{font: '25px Arial', align: 'center'}"></i-text>
<i-image src="src/assets/i2d-frame.svg" :width="200" :x="175" :y="100"></i-image>
</i-page>
</pdfFrame>
License
This project is licensed under the MIT License. See the LICENSE file for more details.
Compatibility
Nuxt-Pdf-Frame is Nuxt 3 client only module.