You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kendo UI图表中多次出现<g>标签transform属性错误导致PDF导出失败

解决Kendo Chart触发matrix(NaN,NaN,...)错误及PDF导出失效的思路

我之前也碰到过类似的Kendo Chart NaN转换错误,折腾了好一阵才找到解决方向,分享几个排查思路给你,你可以逐一验证:

  • 先排查数据源的有效性
    虽然Dojo里用相同数据源没问题,但项目中的数据源可能存在隐性的无效值——比如空字符串、undefined、带空格的数字字符串,甚至是被意外转换为字符串类型的数值。Kendo Chart在计算图表布局时,遇到这些非有效数值会直接生成NaN的transform矩阵。
    你可以先对数据源做一次清洗:

    // 示例:过滤并转换数据源中的数值字段
    const validData = rawData.filter(item => {
      const numValue = parseFloat(item.yourValueField);
      return !isNaN(numValue);
    }).map(item => ({
      ...item,
      yourValueField: parseFloat(item.yourValueField)
    }));
    
  • 检查图表配置中的动态计算逻辑
    如果你的图表配置(比如坐标轴的min/max、系列的size属性等)用到了动态计算,比如基于数据源极值设置轴范围,当数据源异常时很容易算出NaN。记得给这些计算加上兜底默认值:

    yAxis: {
      min: Math.min(...validData.map(d => d.yourValueField)) || 0,
      max: Math.max(...validData.map(d => d.yourValueField)) || 100
    }
    
  • 确认图表容器的尺寸是否稳定
    要是图表初始化时,容器是隐藏状态(比如在未激活的tab里)或者没有明确的宽高样式,Kendo Chart计算布局时会拿到NaN的尺寸,进而触发transform错误。
    解决方法很简单:给容器设置固定宽高,或者等容器显示后再初始化/刷新图表:

    .chart-wrapper {
      width: 800px;
      height: 400px;
    }
    

    或者在容器显示后调用:

    $("#yourChart").data("kendoChart").refresh();
    
  • 对齐Kendo UI版本
    项目中使用的Kendo版本可能和Dojo编辑器里的版本不一致,某些旧版本存在这类NaN转换的已知bug。你可以对比Dojo里的版本号,把项目的Kendo包升级到相同版本,或者直接更新到最新稳定版试试。

  • 修复PDF导出的异常
    这个错误会破坏图表的SVG结构,导致PDF导出失败。你可以在导出前强制刷新图表,并且禁用动画(动画未完成会让SVG处于不稳定状态):

    $("#exportBtn").click(() => {
      const chart = $("#yourChart").data("kendoChart");
      // 先刷新确保图表状态正常
      chart.refresh();
      // 延迟一点等待渲染完成
      setTimeout(() => {
        kendo.drawing.drawDOM($("#yourChart"))
          .then(group => kendo.drawing.exportPDF(group, {
            paperSize: "A4",
            margin: { top: "1cm", bottom: "1cm" }
          }))
          .done(data => kendo.saveAs({
            dataURI: data,
            fileName: "chart-export.pdf"
          }));
      }, 300);
    });
    

内容的提问来源于stack exchange,提问作者Tim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 08:33:13