前端项目实战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 @ 2022-10-26 22:32  前端导师歌谣  阅读(187)  评论(0)    收藏  举报