当前位置:首页 > VUE

vue实现pdf盖章

2026-01-17 17:25:23VUE

实现PDF盖章功能(Vue版)

依赖库准备 安装pdf-libfile-saver库用于PDF处理和文件下载:

npm install pdf-lib file-saver

核心实现步骤

获取PDF文件 通过文件输入框或API获取PDF文件,转换为ArrayBuffer:

const fileInput = document.getElementById('pdf-upload');
const file = fileInput.files[0];
const arrayBuffer = await file.arrayBuffer();

加载PDF文档 使用pdf-lib加载PDF并获取第一页:

vue实现pdf盖章

import { PDFDocument } from 'pdf-lib';

const pdfDoc = await PDFDocument.load(arrayBuffer);
const pages = pdfDoc.getPages();
const firstPage = pages[0];

添加印章图像 准备印章图片(PNG格式),嵌入到PDF中:

const stampImage = await fetch('/stamp.png').then(res => res.arrayBuffer());
const stampPngImage = await pdfDoc.embedPng(stampImage);

定位并绘制印章 在指定位置绘制印章(示例为右下角):

vue实现pdf盖章

const { width, height } = firstPage.getSize();
firstPage.drawImage(stampPngImage, {
  x: width - 150, // 距右侧150px
  y: 50,          // 距底部50px
  width: 100,
  height: 100
});

保存并导出PDF 生成修改后的PDF并触发下载:

const modifiedPdf = await pdfDoc.save();
import { saveAs } from 'file-saver';
saveAs(new Blob([modifiedPdf]), 'stamped-document.pdf');

完整组件示例

<template>
  <div>
    <input type="file" @change="handleFileUpload" accept=".pdf" />
    <button @click="addStamp">添加印章</button>
  </div>
</template>

<script>
import { PDFDocument } from 'pdf-lib';
import { saveAs } from 'file-saver';

export default {
  data() {
    return {
      pdfData: null
    };
  },
  methods: {
    async handleFileUpload(event) {
      this.pdfData = await event.target.files[0].arrayBuffer();
    },
    async addStamp() {
      if (!this.pdfData) return;

      const pdfDoc = await PDFDocument.load(this.pdfData);
      const stampImg = await this.loadStampImage();
      const page = pdfDoc.getPages()[0];

      page.drawImage(stampImg, {
        x: page.getWidth() - 150,
        y: 50,
        width: 100,
        height: 100
      });

      const modifiedPdf = await pdfDoc.save();
      saveAs(new Blob([modifiedPdf]), 'stamped.pdf');
    },
    async loadStampImage() {
      const response = await fetch('/stamp.png');
      return await pdfDoc.embedPng(await response.arrayBuffer());
    }
  }
};
</script>

注意事项

  • 印章图片建议使用透明背景的PNG格式
  • 坐标系统原点(0,0)位于页面左下角
  • 对于多页PDF需要遍历所有页面进行处理
  • 服务端渲染场景需将文件操作放在客户端生命周期钩子中

标签: vuepdf
分享给朋友:

相关文章

vue实现图片分析

vue实现图片分析

Vue 实现图片分析的方法 在 Vue 中实现图片分析通常涉及图片上传、预览、后端交互以及分析结果展示等功能。以下是几种常见的实现方式: 使用 HTML5 File API 和 Canvas…

vue实现多人视频

vue实现多人视频

实现多人视频通话的Vue方案 使用WebRTC技术结合Vue框架可以构建多人视频通话应用。以下是核心实现方法: 技术栈选择 Vue 2/3作为前端框架 WebRTC用于实时通信 Socket.…

vue实现条件判断

vue实现条件判断

Vue 条件判断实现方法 Vue 提供了多种方式实现条件判断,可以根据不同场景选择合适的方式。 v-if / v-else-if / v-else 这是 Vue 中最常用的条件渲染指令,根据表达式…

vue实现点击旋转轮盘

vue实现点击旋转轮盘

实现点击旋转轮盘效果 在Vue中实现点击旋转轮盘效果,可以通过CSS动画和Vue的数据绑定结合完成。以下是一个完整的实现方案: 准备工作 需要安装Vue.js环境,可以通过CDN引入或使用Vue C…

vue实现自定义登录

vue实现自定义登录

实现自定义登录的基本步骤 在Vue中实现自定义登录功能通常需要结合前端和后端技术。以下是一个基本的实现流程: 创建登录表单组件 使用Vue的单文件组件创建一个登录表单,包含用户名和密码输入框以及提…

用vue实现滑动输入条

用vue实现滑动输入条

使用 Vue 实现滑动输入条 使用原生 HTML5 input range 实现 在 Vue 模板中直接使用 <input type="range">,通过 v-model 绑定数据:…