前端项目实战126-html2canvas 进行打印

import html2canvas from "html2canvas";

打印

//级联选择框选择事件
export function printData(id: any){ // 定义打印方法
// 先用html2canvas将页面整个转为一张截图,再打印,防止出现echarts无法打印
const dom: HTMLElement | null = document.getElementById(id); //获取需要打印的区域
console.log(dom,"dom")
html2canvas(dom as HTMLElement, {
scale: 2,
width: dom?.offsetWidth,
height: dom?.offsetHeight,
}).then((canvas:any) => {
const context: CanvasRenderingContext2D | null = canvas.getContext("2d");
// context!.mozImageSmoothingEnabled = false;
// context!.webkitImageSmoothingEnabled = false;
// context!.msImageSmoothingEnabled = false;
context!.imageSmoothingEnabled = false;
const src64 = canvas.toDataURL();
const contentWidth = canvas.width;
const contentHeight = canvas.height;
const imgWidth = 1800; // 根据纸张宽度设定
const imgHeight = (1762 / contentWidth) * contentHeight;
const img = new Image();
const div = document.createElement("div");
console.log(imgWidth,imgHeight,contentWidth,contentHeight,"data")
div.appendChild(img);
img.setAttribute("src", src64);
img.setAttribute("width", imgWidth.toString());
img.setAttribute("height", imgHeight.toString());
img.setAttribute("id", "imgs");
div.setAttribute("id", "printImg");
document.body.appendChild(div);
window.document.body.innerHTML =
window.document.getElementById("printImg")!.innerHTML;
img.onload = () => {
window.print(); // 调用浏览器打印
window.location.reload();
};
});
}

posted @   前端导师歌谣  阅读(138)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示