html怎么用pdf保存,html保存为PDF

PDF 保存

原理 html转canvas再转pdf

以下是React中使用,改成VUE使用原理也差不多

该方案胜在省事,但是因为是转图片存,所以分页处可能会有点问题

第三方库

yarn add html2canvas jspdf

代码

直接调用handlePDF方法即可下载。

import html2Canvas from "html2canvas";

import * as jsPDF from "jspdf";

handlePDF = () => {

// 获取需要打印的Dom节点

const pdfDom = document.getElementsByClassName("pdf")[0];

html2Canvas(pdfDom, {

windowWidth: pdfDom.scrollWidth,

windowHeight: pdfDom.scrollHeight + 200,

height: pdfDom.scrollHeight + 200,

// 截屏起止位置 scrollX、scrollY

scrollY: 0,

// 放大两倍,防止模糊

scale: 2

}).then(canvas => {

var contentWidth = canvas.width;

var contentHeight = canvas.height;

var pageHeight = (contentWidth / 592.28) * 841.89;

var leftHeight = contentHeight;

//页面偏移

var position = 0;

//a4纸的尺寸[595.28,841.89],html页面生成的canvas在pdf中图片的宽高

var imgWidth = 595.28;

var imgHeight = (595.28 / contentWidth) * contentHeight;

var pageData = canvas.toDataURL("image/jpeg", 1.0);

var pdf = new jsPDF("", "pt", "a4");

//有两个高度需要区分,一个是html页面的实际高度,和生成pdf的页面高度(841.89)

//当内容未超过pdf一页显示的范围,无需分页

if (leftHeight < pageHeight) {

pdf.addImage(pageData, "JPEG", 20, 40, imgWidth, imgHeight);

} else {

while (leftHeight > 0) {

pdf.addImage(pageData, "JPEG", 20, position + 40, imgWidth, imgHeight);

leftHeight -= pageHeight;

position -= 841.89;

//避免添加空白页

if (leftHeight > 0) {

pdf.addPage();

}

}

}

pdf.save(`方案配置.pdf`);

});

};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值