当前位置:首页 > VUE

vue实现pdf下载

2026-01-15 03:39:30VUE

Vue 中实现 PDF 下载的方法

使用 pdf-lib 生成并下载 PDF

安装 pdf-lib 库:

npm install pdf-lib

示例代码:

import { PDFDocument, StandardFonts, rgb } from 'pdf-lib';

async function generatePDF() {
  const pdfDoc = await PDFDocument.create();
  const page = pdfDoc.addPage();
  const { width, height } = page.getSize();
  const font = await pdfDoc.embedFont(StandardFonts.Helvetica);

  page.drawText('Hello World!', {
    x: 50,
    y: height - 50,
    size: 30,
    font,
    color: rgb(0, 0, 0),
  });

  const pdfBytes = await pdfDoc.save();
  const blob = new Blob([pdfBytes], { type: 'application/pdf' });
  const link = document.createElement('a');
  link.href = URL.createObjectURL(blob);
  link.download = 'example.pdf';
  link.click();
}

使用 html2pdf.js 将 HTML 转换为 PDF

安装 html2pdf.js

vue实现pdf下载

npm install html2pdf.js

示例代码:

import html2pdf from 'html2pdf.js';

function downloadPDF() {
  const element = document.getElementById('content-to-export');
  const opt = {
    margin: 10,
    filename: 'export.pdf',
    image: { type: 'jpeg', quality: 0.98 },
    html2canvas: { scale: 2 },
    jsPDF: { unit: 'mm', format: 'a4', orientation: 'portrait' }
  };

  html2pdf().from(element).set(opt).save();
}

直接下载服务器上的 PDF 文件

使用 axiosfetch 下载服务器上的 PDF:

vue实现pdf下载

function downloadPDFFromServer() {
  const link = document.createElement('a');
  link.href = '/path/to/file.pdf';
  link.download = 'document.pdf';
  document.body.appendChild(link);
  link.click();
  document.body.removeChild(link);
}

使用 jsPDF 生成简单 PDF

安装 jspdf

npm install jspdf

示例代码:

import jsPDF from 'jspdf';

function generateSimplePDF() {
  const doc = new jsPDF();
  doc.text('Hello World!', 10, 10);
  doc.save('simple.pdf');
}

注意事项

  • 浏览器兼容性:某些 PDF 生成库可能不支持旧版浏览器。
  • 文件大小:生成的 PDF 文件过大可能影响性能。
  • 权限问题:确保下载操作由用户交互触发,避免被浏览器拦截。
  • 样式保留:使用 HTML 转 PDF 时,复杂样式可能需要额外配置。

标签: vuepdf
分享给朋友:

相关文章

vue实现图片分析

vue实现图片分析

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

vue实现多级表头

vue实现多级表头

Vue 实现多级表头的方法 使用 el-table 组件 Element UI 的 el-table 组件支持多级表头的实现,通过嵌套 el-table-column 即可完成。 <el-t…

vue实现人脸识别比对

vue实现人脸识别比对

Vue 实现人脸识别比对的方法 使用现成的人脸识别 API 通过调用第三方人脸识别 API(如 Face++、百度 AI、腾讯云等)实现比对功能。注册开发者账号获取 API Key 和 Secret,…

vue中实现显示和隐藏

vue中实现显示和隐藏

控制显示与隐藏的方法 在Vue中实现元素的显示和隐藏可以通过多种方式完成,以下是常见的几种方法: 1. 使用v-if指令v-if根据条件动态添加或移除DOM元素,适合需要频繁切换的场景。当条件为f…

vue实现活动倒计时

vue实现活动倒计时

实现活动倒计时的基本思路 在Vue中实现活动倒计时通常需要获取当前时间与活动结束时间的差值,并将其转换为天、小时、分钟、秒的格式展示。通过定时器每秒更新显示的时间。 定义倒计时数据 在Vue组件的…

vue实现画圆弧并着色

vue实现画圆弧并着色

在 Vue 中实现画圆弧并着色 使用 Canvas API 绘制圆弧 在 Vue 组件的 mounted 钩子中,通过 Canvas API 绘制圆弧。创建一个 canvas 元素并获取其上下文:…