Highcharts使用tcpdf将多个图表导出为pdf

时间:2013-03-28 11:53:25

标签: php highcharts tcpdf

在我的网站上,我有一些html表和一些来自highcharts的图表。 我需要使用tcpdf导出所有内容。

所以我一直在寻找它,而我所创立的唯一的事情就是svg。但我不知道如何使用它与tcpdf。 我想将每个图表导出为png图像,然后将这些图像添加到pdf中,但我失败了。因为每次我导出图像时都会询问我如何保存它,但我需要自动保存它。

请问您的解决方案是什么?

抱歉我的英文。

2 个答案:

答案 0 :(得分:0)

有很多TCPD examples - 你可以看到可以将图像导出为pdf。或者你想要一些特别的东西吗?

注意:您可以找到一种如何从highcharts导出图像的方法:like here

答案 1 :(得分:0)

我有一个相当简单的页面报告一些数字,屏幕上有几个图表。我认为TCPDF支持SVG并且图形是在SVG中生成的,这将是捕获它们的最佳格式,令人惊讶的是我无法做到这一点,所以这里是我的脚本的通用版本phantomjs:

var dest_folder = 'C:\\myfolder\\subfolder\\';
console.log('Destination Folder: ' + dest_folder);

var page = require('webpage').create();
page.open('http://www.example.com/graphs_page/', function(status) {
if (status !== 'success') {
    console.log('Unable to load the address!');
    phantom.exit();
} else {
    console.log('Loaded Page');

    // Get the first graph
    graph_1_svg = page.evaluate(function() {
            return document.getElementById('results_graph_1').children[0].innerHTML;
    });
    console.log('graph_1_svg: ' + graph_1_svg.length + ' chars long');
    // Write to destination folder or report error to console
    var fs = require('fs');
    try {
        fs.write(dest_folder + 'graph_1.svg', graph_1_svg, 'w');
    } catch(e) {
        console.log(e);
    }

    // Get the second graph
    graph_2_svg = page.evaluate(function() {
            return document.getElementById('results_graph_2').children[0].innerHTML;
    });
    console.log('graph_2_svg: ' + graph_2_svg.length + ' chars long');
    // Write to destination folder or report error to console
    var fs = require('fs');
    try {
        fs.write(dest_folder + 'graph_2.svg', graph_2_svg, 'w');
    } catch(e) {
        console.log(e);
    }

    phantom.exit();
}
});

该页面包含两个目标div,用于highcharts,results_graph_1和results_graph_2,highcharts在其中创建一个子div,然后在其中创建svg,因此通过访问每个目标的内容,我们可以复制出第一个子div svg并将其写出到服务器上的文件中。

然后选择要放入PDF的SVG文件。我不确定您的情况是什么,但我打算用户在点击下载PDF之前在屏幕上查看报告,因此我将在第一阶段保存图表并且SVG文件将在之前准备好PDF已生成。

如果你下载它就运行phantomjs,把这个脚本保存在那里作为test.js,然后在命令提示符下去你解压缩的地方,比如c:\ phantomjs并运行:

phantomjs.exe test.js

脚本的console.log部分将通知您其进度。哦,并更改目标文件夹&在运行之前在脚本中定位目​​标网址。