node-export-server icon indicating copy to clipboard operation
node-export-server copied to clipboard

> 50 bubble charts produce corrupt chart SVG

Open ppcmetrics-thp opened this issue 9 months ago • 1 comments

Expected behaviour

All 51 bubbles should be displayed without error.

Actual behaviour

The export server produces a corrupt SVG. When opening the file, following error is displayed:

error on line 44 at column 7087: Namespace prefix xlink for href on image is not defined

If I fix it by adding xmlns:xlink="http://www.w3.org/1999/xlink" to the svg tag, the image is displayed without an error. But no bubbles are shown.

Additional info

Base config structure used:

{
    "chart": {
        "type": "bubble",
        "plotBorderWidth": 1,
        "zooming": {
            "type": "xy"
        }
    },
    "title": {
        "text": "Highcharts Bubbles Sizing"
    },
    "subtitle": {
        "text": "Smallest and largest bubbles are equal, intermediate bubbles different."
    },
    "xAxis": {
        "gridLineWidth": 1
    },
    "yAxis": {
        "startOnTick": false,
        "endOnTick": false
    },
    "series": [
        {
            "data": [
                [
                    5,
                    5,
                    5
                ]
            ],
            "sizeBy": "area",
            "name": "Size by area"
        },
    ]
}

Command used:

highcharts-export-server --logToFile false --allowCodeExecution -nologo true -type=svg  -outfile /tmp/out.svg -infile /tmp/in.json  --logLevel 4

Files used

not_working.json Image Image working.json Image

ppcmetrics-thp avatar Mar 13 '25 10:03 ppcmetrics-thp

Hi @ppcmetrics-thp,

This behavior is caused by the boost module, which is loaded by default in the server. To improve performance, it renders series as a Base64-encoded image after number of bubbles exceeds 49 elements. The issue here might be related to another one where such strings aren't embedded correctly. For this case, you can either remove the boost module entirely or disable it by setting boost.enabled to false.

PaulDalek avatar Jun 02 '25 12:06 PaulDalek