【技术支持】canvas转换为图片或PDF保存电脑

注意:有些网站可能由于canvas跨域污染问题,无法使用toBlob,所以无法转换

|---|
| |

开发者工具中,选中需要转换的canvas元素(使其可以使用$0语法)

控制台输入如下代码

javascript 复制代码
 $0.toBlob(function (blob) {
    var link = document.createElement("a");
    link.href = URL.createObjectURL(blob);
    link.download = "image.png";
    link.click();
  }, "image/png");

优化,转换为pdf

javascript 复制代码
fetch("https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js")
    .then((response) => response.text())
    .then((scriptText) => {
      eval(scriptText);//执行脚本
      // 现在可以使用 jsPDF 了
      const pageList = document.querySelectorAll("canvas");

      const { jsPDF } = window.jspdf;

      async function convertCanvasToPDF(pageList, pdfFileName) {
        const pdf = new jsPDF();

        for (let i = 0; i < pageList.length; i++) {
          const canvas = pageList[i];
          if (canvas) {
            const imgData = canvas.toDataURL("image/png");
            if (i > 0) {
              pdf.addPage(); // 在不是第一页的情况下添加新页面
            }
            pdf.addImage(imgData, "PNG", 0, 0, 210, 290);
          }
        }
        pdf.save(pdfFileName);
      }
      // 使用示例
      convertCanvasToPDF(pageList, "output.pdf");
    });
相关推荐
陈随易2 小时前
Postman 被曝自动往 Claude Code 和 Codex 装插件
前端·后端·程序员
布莱克6053 小时前
C/C++ 中变量的声明与定义:区别、联系与常见误区
c语言·开发语言·c++·声明·定义
LabVIEW开发3 小时前
LabVIEW 局部变量为何引发竞争条件?四种同步机制
开发语言·labview
Dream-Y.ocean4 小时前
鸿蒙PC平台宅匠 3D 室内设计适配实战:基于 Electron 壳方案的 Three.js 双渲染引擎与参数化户型编辑器开发
javascript·3d·harmonyos
benchmark_cc4 小时前
A 股、港股、美股如何建立统一的标的主数据格式?
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
Csvn5 小时前
性能监控
前端
Highcharts.js5 小时前
Highcharts Gantt使用符号的自定义数据标签开发甘特图示例
javascript·甘特图·highcharts·图表开发·实战代码·响应式图表
Zenova EdgeOS5 小时前
Go 工业边缘错误处理实战:用 errors 构建可追溯错误链
开发语言·数据库·golang
Csvn5 小时前
构建工具
前端
取名真是6 小时前
Python 算法知识点从基础到进阶
开发语言·python·算法