Highcharts Treemap 9.3.0 离线导出PDF失败 其他导出格式运行正常
问题根因
你遇到的是Highcharts 9.3.0版本的已知内置bug,Treemap系列的离线导出PDF逻辑存在缺陷:offline-exporting.js在处理Treemap特有的数据标签DOM节点时,节点销毁逻辑判断错误,会尝试移除不属于当前父节点的子元素,因此触发Failed to execute 'removeChild' on 'Node'异常。
PNG、JPEG、SVG离线导出不会触发该缺陷逻辑,在线导出是提交到Highcharts官方服务端处理,不受前端版本bug影响,所以这几个场景功能正常。
解决方案
提供三个可落地的方案,可根据业务场景选择:
方案1:升级Highcharts版本(最推荐)
该bug已在Highcharts 9.3.2及后续稳定版本中被官方修复,直接升级依赖到9.3.2或更高版本即可解决问题,无需修改现有业务代码。
方案2:版本兼容补丁(无法升级时使用)
如果业务当前暂不支持升级Highcharts版本,可以在图表初始化前添加如下补丁代码,临时规避导出时的节点销毁错误:
// Highcharts 9.3.0 Treemap离线导出PDF兼容补丁 Highcharts.wrap(Highcharts.Series.types.treemap.prototype, 'destroy', function (originMethod) { // 导出过程中跳过Treemap的节点销毁逻辑,避免触发DOM异常 if (this.chart.isExporting) return originMethod.apply(this, Array.from(arguments).slice(1)) })
该补丁只会在导出PDF的临时过程中生效,不会影响图表的正常渲染和交互。
方案3:仅PDF格式走在线导出(无需修改核心逻辑)
如果不想调整依赖或添加补丁,可以修改导出配置,仅将PDF格式的导出切到官方在线服务,其他格式继续使用离线导出:
Highcharts.chart('container', { // 原有配置保持不变 exporting: { menuItemDefinitions: { downloadPDF: { onclick: function () { this.exportChart({ type: 'application/pdf' }, null, null, { fallbackToExportServer: true }) } } } }, // 其余原有配置... })
内容的提问来源于stack exchange,提问作者Amanda
相关产品推荐
相关产品推荐

