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

Google Charts相对URL致PDF导出图表不显示问题求助

Google Charts 相对URL导致PDF导出时图表无法渲染的问题及解决方案

我确实碰到过不少开发者遇到这个情况!问题的核心在于Google Charts生成的图表资源使用了协议相对URL(比如//chart.googleapis.com),这种URL在浏览器环境下会自动适配当前页面的协议(HTTP或HTTPS),但在PHP应用导出PDF的场景中,很多PDF渲染工具不会自动补全缺失的协议头,导致无法正确加载图表资源,最终出现图表不显示的情况。

问题复现代码示例

以下是能复现该问题的代码片段:

<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript">
  google.charts.load('current', {'packages':['imagesparkline']});
</script>
<div id="chart_div"></div>
<script>
  google.charts.setOnLoadCallback(drawChart);
  function drawChart() {
    var data = google.visualization.arrayToDataTable([
      ['Revenue', 'Licenses'],
      [435, 132], [438, 131], [512, 137], [460, 142],
      [491, 140], [487, 139], [552, 147], [511, 146],
      [505, 151], [509, 149]
    ]);
    var chart = new google.visualization.ImageSparkLine(document.getElementById('chart_div'));
    chart.draw(data, {
      width: 120, height: 40,
      showAxisLines: false, showValueLabels: false, labelPosition: 'left'
    });
  }
</script>

解决方案

最直接有效的办法就是在PDF导出前,将页面中的协议相对URL替换为完整的HTTPS绝对URL。你可以在PHP中通过字符串替换实现:

$html = str_replace('src="//chart.googleapis.com', 'src="https://chart.googleapis.com', $html);

这段代码会把所有指向Google Charts的协议相对资源链接替换成HTTPS开头的完整URL,确保PDF渲染工具能正确定位到图表资源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 03:42:37