• html2canvas页面滚动内容截图并下载


    <!--div转成图片并下载-->
        <script src="./js/html2canvas.min.js"></script>
        <script>
            // edited from https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob#Polyfill
            var dataURIToBlob =  function (imgName, dataURI, callback) {
                var binStr = atob(dataURI.split(',')[1]),
                                len = binStr.length,
                                arr = new Uint8Array(len);
    
                for (var i = 0; i < len; i++) {
                    arr[i] = binStr.charCodeAt(i);
                }
    
                callback(imgName, new Blob([arr]));
            }
    
            var callback = function (imgName, blob) {
                var triggerDownload = $("<a>").attr("href", URL.createObjectURL(blob)).attr("download", imgName).appendTo("body").on("click", function () {
                    if (navigator.msSaveBlob) {
                        return navigator.msSaveBlob(blob, imgName);
                    }
                });
                triggerDownload[0].click();
                triggerDownload.remove();
            };
    
            function createImg() {
                var getPixelRatio = function (context) { // 获取设备的PixelRatio
                    var backingStore = context.backingStorePixelRatio ||
                                    context.webkitBackingStorePixelRatio ||
                                    context.mozBackingStorePixelRatio ||
                                    context.msBackingStorePixelRatio ||
                                    context.oBackingStorePixelRatio ||
                                    context.backingStorePixelRatio || 0.5;
                    return (window.devicePixelRatio || 0.5) / backingStore;
                };
                //生成的图片名称
                var imgName = "cs.png";
                var shareContent = document.getElementsByTagName("body")[0];
                let scale = 3;
                var opts = {
                    //scale: scale,
                    /*canvas: canvas,
                     width,
                    height: height,*/
                    dpi: window.devicePixelRatio,
                    useCORS: true, // 【重要】开启跨域配置
                    // window.screen.availWidth,  //显示的canvas窗口的宽度
                    //height: window.screen.availHeight, //显示的canvas窗口的高度
                     window.document.body.offsetWidth,   //获取当前网页的宽度
                    height: window.document.body.offsetHeight, //获取当前网页的高度
                    windowWidth: document.body.scrollWidth,     //获取X方向滚动条内容
                    windowHeight: document.body.scrollHeight, //获取Y方向滚动条内容
                    x: 0,                                                                            //页面在水平方向没有滚动,故设置为0
                    y: window.pageYOffset                                            //页面在垂直方向的滚动距离
                };
                html2canvas(shareContent, opts).then(function (canvas) {
                    const context = canvas.getContext("2d");
    
                    // 【重要】关闭抗锯齿 https://segmentfault.com/a/1190000011478657
                    context.imageSmoothingEnabled = false;
                    context.webkitImageSmoothingEnabled = false;
                    context.msImageSmoothingEnabled = false;
                    context.imageSmoothingEnabled = false;
                    let imgUrl = canvas.toDataURL("image/png").replace("image/png","image/octet-stream");
                    //console.log("imgUrl",imgUrl);
                    dataURIToBlob(imgName, imgUrl, callback);
                });
            }
    
        </script>
  • 相关阅读:
    <script>标签的加载解析执行
    百度地图API位置偏移的校准算法
    开源实时消息推送系统 MPush
    开源GIS软件 4
    Bootstrap 只读输入框
    javascript中的后退和刷新
    HTML中的文本框textarea标签
    Spring Boot 特性 —— SpringApplication
    SpringMVC使用POST方法传递数据,却出现Request method 'GET' not supported?
    springboot的登录拦截机制
  • 原文地址:https://www.cnblogs.com/siyecao2010/p/11642008.html
Copyright © 2020-2023  润新知