vue项目导出pdf(前端将html转为pdf并导出)

工具包

复制代码
html2canvas:将页面html转canvas
jspdf:根据canvas生成的图片导出pdf

官网

GitHub - parallax/jsPDF: Client-side JavaScript PDF generation for everyone.Client-side JavaScript PDF generation for everyone. - parallax/jsPDFhttps://github.com/parallax/jsPDF

示例代码

javascript 复制代码
import html2canvas from "html2canvas";
import jsPDF from "jspdf";

export const downloadPDF = (page, name) => {
    html2canvas(page).then(function (canvas) {
        canvas2PDF(canvas, name);
    });
};

const canvas2PDF = (canvas, name) => {
    let contentWidth = canvas.width;
    let contentHeight = canvas.height;

    //a4纸的尺寸[595.28,841.89],html页面生成的canvas在pdf中图片的宽高
    let imgWidth = 455.28;
    let imgHeight = 455.28 / contentWidth * contentHeight;

    // 第一个参数: l:横向  p:纵向
    // 第二个参数:测量单位("pt","mm", "cm", "m", "in" or "px")
    let pdf = new jsPDF("p", "pt");

    pdf.addImage(
        canvas.toDataURL("image/jpeg", 1.0),
        "JPEG",
        70,
        30,
        imgWidth,
        imgHeight
    );
    if (!name) name = '导出'
    pdf.save(name + ".pdf");
};
相关推荐
Slice_cy1 分钟前
Mint 自研框架设计与实现:从重复开发走向配置驱动(三)
前端·后端·架构
JoyT12 分钟前
Nuxt 3的核心设计与静态官网应用
前端·javascript·vue.js
程序员黑豆14 分钟前
鸿蒙应用开发之@State 装饰器详解:从基本类型到 @Observed/@ObjectLink/@Track 嵌套监听
前端·harmonyos
杉氧16 分钟前
Flutter 像素级还原实战:用 CustomPaint 与 Bezier 曲线手绘精致图针
android·前端·flutter
金融小白数据分析之路2 小时前
绍兴市镇街echarts 制作
前端·数据库·echarts
爱昏羔2 小时前
上篇:从PDF到向量库 — 物流行业RAG系统的知识库构建全解析
python·langchain·pdf·agent·rag
Slice_cy2 小时前
Mint 自研框架设计与实现:从重复开发走向配置驱动(二)
前端·后端·架构
greenbbLV2 小时前
积分兑换商城供应商挑选:避坑要点与靠谱选择解析
前端·小程序
a1117763 小时前
3D 建筑编辑器 Pascal Editor THreeJS 开源
前端·3d·html
jason_yang3 小时前
写给女儿的英语App
前端·人工智能