当前位置:首页 > 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 中实现密码框功能,可以通过原生 HTML 结合 Vue 指令或使用第三方组件库完成。以下是几种常见方案: 原生 HTML + Vue 双向绑定 <templ…

实现 vue ssr

实现 vue ssr

Vue SSR 实现方法 Vue SSR(Server-Side Rendering)通过服务器端渲染 Vue 应用,提升首屏加载速度和 SEO 友好性。以下是核心实现方法: 基础配置 安装必要依赖…

vue toast实现

vue toast实现

Vue Toast 实现方法 使用第三方库(推荐) 安装 vue-toastification 库,这是一个功能丰富且轻量级的 Vue Toast 插件。 npm install vue-toast…

vue实现导航

vue实现导航

使用 Vue Router 实现导航 Vue Router 是 Vue.js 官方提供的路由管理器,用于构建单页应用(SPA)的导航系统。以下是实现导航的基本步骤。 安装 Vue Router n…

vue实现自动滚动

vue实现自动滚动

实现自动滚动的方法 在Vue中实现自动滚动可以通过多种方式完成,以下是几种常见的方法: 使用scrollTo或scrollBy方法 通过JavaScript的scrollTo或scrollBy方法…

vue弹幕实现不重叠

vue弹幕实现不重叠

vue弹幕实现不重叠的方法 使用CSS定位和动态计算 通过动态计算每条弹幕的垂直位置,确保新弹幕不会与现有弹幕重叠。利用position: absolute和top属性控制每条弹幕的显示位置。 da…