Angular.js, Highcharts, Phantomjs PDF打印机-图表不显示
Angular.js, Highcharts, Phantomjs PDF printer - graphs not showing up
我有一个非常奇怪的问题。我有一个使用Highcharts作为图形渲染库的Angular.js应用程序。此应用程序必须支持打印为PDF,这是使用我们公司使用的Phantomjs PDF服务完成的。
图形是使用自定义指令生成的。简化代码:
app.directive('metricsChartMulti', [
function () {
return {
...
link: function postLink(scope, element, attrs) {
...
// plot data after they are loaded
scope.$on('DATA_LOAD_SUCCESS', function() {
var chartOptions = {
series: scope.series
...
};
var chart = new Highcharts.Chart(chartOptions);
});
}
}
}
]);
系列数据(scope.series)在控制器中准备,控制器将它们添加到范围中。一切都在浏览器中完美地工作,没有错误。然而,当我调用基于Phantomjs2的PDF创建服务时,图形没有在返回的PDF文件中呈现。
我试图在代码中找到错误,但我相信我使用了Angular框架的通用最佳实践来创建应用程序。经过长时间的调试,我发现当我改变作用域时。序列为数据的静态模拟,PDF被正确绘制。
在浏览器(Chrome, Firefox)中,这不会产生明显的变化。
我还尝试直接从Highcharts网站使用不同的url生成pdf, pdf被正确创建。对我来说,这意味着公司的PDF服务没有问题。
你知道如何解决这个尴尬的局面吗?谢谢你。所以最终的帮助是作用域的深度克隆。
var series = JSON.parse(JSON.stringify(scope.series));
对我来说,这是一种尴尬的解决方案,但至少它现在工作。
相关文章:
- 如何使用jquery在工具提示上显示pdf文件
- 通过发送POST参数在ExtJS 4中显示PDF
- 我想在灯箱中显示pdf文档
- window.open无法在显示pdf的jsp页面中工作
- 如何从输入字段在浏览器中显示PDF文件
- 在新窗口中显示pdf流
- jqGrid-单击链接时在新窗口中显示PDF
- 如何发布到URL并打开一个新窗口以显示pdf格式的响应
- 在phonegap应用程序中显示pdf
- 使用pdf.js突出显示pdf中的一个部分
- 在网络上显示 PDF,但不可下载
- 如何在显示 pdf 文件之前加载加载程序图像
- 浏览器请求文件,服务器下载 pdf,浏览器在 iframe 中显示 pdf
- 如何使用javascript在浏览器中显示PDF流
- 在iframe PHP中显示pdf
- 如何使用RESTful/ajax/js在UI上显示PDF,使用来自UI的表单输入
- 我需要一个显示pdf的解决方案
- Angular-下载并显示PDF
- 在浏览器中只显示PDF一次,然后将其从C#服务器中删除
- 通过ajax在浏览器选项卡中显示pdf