使用Cloudformatter将Google Chart导出为PDF,生成空白PDF

加内什·加奇

我正在尝试将Google图表导出到PDF文件。我正在cloudformatter.com使用xepOnline.jqPlugin.js插件我遵循了http://www.cloudformatter.com/CSS2Pdf.APIDoc.Usage中的所有步骤

但是,当我尝试导出时,PDF生成带有空白方框的文件。

在此处输入图片说明

我正在从jquery ajax调用加载Google图表。有人能告诉我这可能是什么问题吗?

这是没有ajax调用的示例代码-

 <button type="button" id="" class="btn btn-success pull-right" style="margin-right: 7px;" onclick="return xepOnline.Formatter.Format('chart_container', {render: 'download', filename: 'Years_Build', mimeType: 'application/pdf'});">Export</button>
    <div id="chart_container">
      <div id="chart_div"></div>
    </div>
<script type="text/javascript">
function drawChart() {
var data = google.visualization.arrayToDataTable([
          ['Year', 'Sales', 'Expenses', 'Profit'],
          ['2014', 1000, 400, 200],
          ['2015', 1170, 460, 250],
          ['2016', 660, 1120, 300],
          ['2017', 1030, 540, 350]
        ]);

        var options = {
          chart: {
            title: 'Company Performance',
            subtitle: 'Sales, Expenses, and Profit: 2014-2017',
          }
        };

        var chart = new google.charts.Bar(document.getElementById('chart_div'));
        chart.draw(data, google.charts.Bar.convertOptions(options));
                                                            }
google.charts.load('current', {'packages': ['bar']});
google.charts.setOnLoadCallback(drawChart);
</script>
凯文·布朗

您缺少需要添加的SVG名称空间。如果在每个站点上检查每个图表上的样本小提琴,您将看到一个在绘制图表后添加名称空间的函数。

例如,请参见http://jsfiddle.net/w1rpjxoe/

您将看到此功能:

function AddNamespace(){
  var svg = jQuery('#chart_div svg');
  svg.attr("xmlns", "http://www.w3.org/2000/svg");
  svg.css('overflow','visible');
}

从此侦听器调用它:

 google.visualization.events.addListener(chart, 'ready', AddNamespace);

这样做是将缺少的SVG名称空间添加到图表SVG中,而Google图表不执行此操作,而@cloudformatter则需要。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章