导出时AmChart导出更改字体颜色

时间:2016-12-09 10:43:15

标签: svg export amcharts

我有问题并尝试了不同的解决方案,但没有成功。 我有一个amChartXY图表,它有白色标签,图例文字是白色的,但是当我想构建自定义pdf报告时,我无法将这些白色文本转换为黑色。 首先我有一个函数将图表导出到base64字符串,我想在那里将文本颜色转换为黑色,但它不会起作用。 这是一个菜单项的代码片段,它转换为保存到全局数组对象的SVG。

menu: [
            {
                class: "",
                label: "Save to draft",
                click: function() {
                    var overrideObject = {
                        backgroundColor : "rgba(255,255,255,1)",
                        color : "#000",
                        legend : {
                            color : "#000"
                        }
                    };
                    var chartObject = this;
                        chartObject.capture(overrideObject, function () {
                            chartObject.toJPG({}, function (base64) {
                            // charts is global array 
                                    charts.push({
                                        name: customName,
                                        chart: base64
                                    });
                            });
                        });
                }
            },

此处overrideObject正在将backgroundColor属性更改为白色(之前是透明的),但它不会更改字体颜色。此外,我已尝试添加不同的属性,但似乎没有任何工作。 在捕获时这可能吗?

以下是我想要完成的一些图像预览: Image with transparent background Image with white background 出口的AmChart没有详细记录,因此欢迎任何反馈

1 个答案:

答案 0 :(得分:2)

您传递的overrideObject只接受in the list of export settings列出的相同参数。如果您需要更改图表上特定元素的外观,则需要使用the annotation settings section中提到的reviver回调来有选择地应用您的修改。例如,以下是如何定位值轴标签:

  "export": {
    "enabled": true,
    "reviver": function(nodeObj) {
      if (nodeObj.className === 'amcharts-axis-label' && nodeObj.svg.parentNode.classList.contains('amcharts-value-axis')) {
        nodeObj.fill = 'rgba(255,0,0,1)';
      }
    },
    // ...
  }

请注意,您需要使用SVG属性来更改外观,因此您必须设置填充以更改文本元素的颜色。

Codepen demo