Nuxt Nation 大会即将到来。加入我们,时间为 11 月 12-13 日。

nuxt-pdf-frame
@i2d/nuxt-pdf-frame

基于模板的 PDF 和 Canvas 渲染的 Nuxt 模块,由 I2djs 提供支持。

www.pdf-frame.org

nuxt-pdf-frame

npmLicenseNuxt

Nuxt-PDF-Frame 是一个 Nuxt 模块,旨在在 Nuxt 应用程序中启用 PDF 和 Canvas 图形的渲染。它提供了一个简单、基于模板的语法和语义,以简化图形内容的创建和管理。利用 i2djs 框架,PDF-Frame-Nuxt 支持以 PDF 和 Canvas 格式生成图形输出。

特性

  • 声明式语法:使用清晰且声明式的语法轻松定义 PDF/Canvas 图形内容。
  • 类似 SVG 的语法和语义:采用熟悉的 SVG 标签和属性语法来定义几何形状。
  • 一致的渲染:为渲染 PDF 和 Canvas 输出提供相同的语法和语义。
  • 自动分页:引擎通过生成新页面来处理内容溢出,确保文档的完整性和可读性。
  • 多页支持:无缝创建多页 PDF 文档。
  • 动画和事件:在画布上下文中轻松定义元素的动画和事件。
  • 兼容 Nuxt 3 的模块。

文档

游乐场

快速设置

安装

# Using pnpm
pnpm add @i2d/nuxt-pdf-frame

# Using yarn
yarn add @i2d/nuxt-pdf-frame

# Using npm
npm install @i2d/nuxt-pdf-frame

集成

@i2d/nuxt-pdf-frame 模块添加到 nuxt.config.js 中。

export default defineNuxtConfig({
  modules: [
    '@i2d/nuxt-pdf-frame'
  ]
})

用法

画布模板

<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 基本模板

<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 多页模板

<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>

许可证

该项目在 MIT 许可证下获得许可。有关更多详细信息,请参阅 LICENSE 文件。

兼容性

Nuxt-Pdf-Frame 仅为 Nuxt 3 客户端模块。