React网页转换为pdf并下载|使用jspdf html2canvas
2023-12-21 20:09:50
checkout 分支后突然报错,提示:
Can't resolve 'jspdf' in ...
Can't resolve 'html2canvas' in ...
解决方法很简单,重新 yarn install 就好了,至于为什么,我暂时也不知道,总之解决了。
思路来源:
先随便记一下写的js,将组件转换为pdf,添加水印,并且下载:
import html2canvas from "html2canvas";
import jsPDF from "jspdf";
/**
* 导出PDF
* @param {导出后的文件名} filename
* @param {要导出的dom节点} dom
* @param {导出的文件水印:用户邮箱} email
*/
export const exportPDF = (filename, dom, email) => {
const scale = 0.8;
// 滚动到顶部,避免打印不全
document.documentElement.scrollTop = 0;
html2canvas(dom, {
allowTaint: true, // Whether to allow cross-origin images to taint the canvas
scale, // The scale to use for rendering. Defaults to the browsers device pixel ratio.
}).then((canvas) => {
const contentWidth = canvas.width / scale;
const contentHeight = canvas.height / scale;
console.log(
"height",
contentHeight,
canvas.height,
contentWidth,
canvas.width,
dom.offsetWidth,
dom.offsetHeight,
);
const pdf = new jsPDF("", "pt", [contentWidth, contentHeight]);
const pageData = canvas.toDataURL("image/jpeg", 1.0);
pdf.addImage(
pageData,
"JPEG",
(contentWidth - contentWidth / 2.6) / 2, // x偏移
20, // y偏移
contentWidth / 2.6,
contentHeight > 14400 ? 14380 : contentHeight,
"",
"FAST"
);
// 添加水印
for (let i = 1; i < contentHeight / 240 - 1; i++) {
pdf.setTextColor(150);
pdf.setFontSize(35);
pdf.setFont("courier");
pdf.text(contentWidth / 2, 450 * i, email, 45);
}
pdf.save(`${filename}.pdf`);
});
};
文章来源:https://blog.csdn.net/weixin_44730335/article/details/135134835
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!