5

我正在为一个客户项目评估 highcharts,并且遇到了使用 phantomjs 渲染极坐标图的问题。图表线显示为厚厚的灰色斑点!我以为这是由于动画,但那是关闭的。会尝试发布图片,但有人对可能导致此问题的其他原因有任何想法吗?如果我从 chrome 打印预览,它看起来也不错。

这是图像

这是作为我使用 phantomjs 附带的 rasterize.js 脚本构建的报告的一部分创建的。所有其他图表都工作正常,极坐标图是唯一没有出来的。如果我将 highcharts 导出服务器脚本与 phantomjs 一起使用,它可以正常工作 - 但这仅允许将 1 个图表导出为 PDF。我需要将整个网页导出为 PDF,包括一些图表。

4

1 回答 1

6

项目的错误跟踪还有另一种解决方法:

https://github.com/ariya/phantomjs/issues/10364#issuecomment-14992612

您需要做的就是在渲染到文件之前删除所有不透明度较低的页面元素:

diff --git a/examples/rasterize.js b/examples/rasterize.js
index fcd74cd..dcc81d4 100644
--- a/examples/rasterize.js
+++ b/examples/rasterize.js
@@ -19,6 +19,16 @@ if (phantom.args.length < 2 || phantom.args.length > 3) {
             console.log('Unable to load the address!');
         } else {
             window.setTimeout(function () {
+                // Remove all low-opacity paths. see PhantomJS  issue #364 
+                page.evaluate(function () {
+                    var paths = document.getElementsByTagName("path");
+                    for (var i = paths.length - 1; i >= 0; i--) {
+                        var path = paths[i];
+                        var strokeOpacity = path.getAttribute('stroke-opacity');
+                        if (strokeOpacity != null && strokeOpacity < 0.2)
+                            path.parentNode.removeChild(path);
+                    }
+                });
                 page.render(output);
                 phantom.exit();
             }, 200);

即使您无权访问包含图表的页面源,您也可以使用它来获取图表。

于 2013-06-04T08:58:21.933 回答