在我的网站上,我有一些html表和一些来自highcharts的图表。 我需要使用tcpdf导出所有内容。
所以我一直在寻找它,而我所创立的唯一的事情就是svg。但我不知道如何使用它与tcpdf。 我想将每个图表导出为png图像,然后将这些图像添加到pdf中,但我失败了。因为每次我导出图像时都会询问我如何保存它,但我需要自动保存它。
请问您的解决方案是什么?
抱歉我的英文。
答案 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部分将通知您其进度。哦,并更改目标文件夹&在运行之前在脚本中定位目标网址。