[javascript] Как сохранить изображение диаграммы на сервере с помощью высокоскоростных диаграмм?



Answers

Я просто реализую это, используя метод Nobita. Я создавал опрос, который показывал результаты пользователя на диаграмме, загружал изображение на мой сервер, а затем отправлял электронное письмо с изображением в нем. Вот несколько замечаний.

Мне пришлось сделать несколько обновлений для файла highcharts / exporting-server / index.php, которые следующие:

Я изменил каталог из «temp» на что-то еще и просто отметьте, что он находится в 4 разных местах.

Мне пришлось изменить shell_exec (), добавив «-XX: MaxHeapSize = 256m», потому что это давало мне ошибку:

$output = shell_exec("java -XX:MaxHeapSize=256m -jar ". BATIK_PATH ." $typeString -d $outfile $width /mypathhere/results/$tempName.svg");

Если вы хотите загрузить это изображение, вы можете оставить только одно:

header("Content-Disposition: attachment; filename=$filename.$ext");
header("Content-Type: $type");
echo file_get_contents($outfile);

Но я изменил это, потому что я хотел отправить путь к изображению, поэтому я удалил это и заменил его на путь изображения ( обратите внимание, что я просто использую временное имя. ):

echo "/mypathhere/results/$tempName.$ext";

Кроме того, этот файл удаляет файл svg, а также новый файл, который вы сделали. Вам нужно удалить код, который удаляет файл:

unlink($outfile);

И вы также можете удалить строку перед ней, если хотите сохранить файл svg.

Не забудьте включить highcharts / js / modules / exporting.js

Затем в вашем JS вы можете сделать что-то вроде следующего:

var chart = new Highcharts.Chart();    
var imageURL = '';
var svg = chart.getSVG();
var dataString = 'type=image/jpeg&filename=results&width=500&svg='+svg;
$.ajax({
    type: 'POST',
    data: dataString,
    url: '/src/js/highcharts/exporting-server/',
    async: false,
    success: function(data){
        imageURL = data;
    }
});

URL, который вы отправляете, является новой версией /exporting-server/index.php. Затем вы можете использовать imageURL, как вам нравится.

Question

С помощью высокопроизводительных карт у вас есть встроенная кнопка для загрузки текущей диаграммы (например: http://www.highcharts.com/demo/ , эта кнопка: ). Вы можете сохранить его как PNG, JPEG, PDF или SVG.

Я бы хотел создать ссылку, которая сохраняет изображение на сервере, а не загружать его . Как я мог это сделать?

Я полагаю, что мне нужно изменить функцию exportChart в файле exporting.src.js. Это похоже на это (но я не знаю, насколько достаточно javascript для этого):

exportChart: function (options, chartOptions) {
        var form,
            chart = this,
            svg = chart.getSVG(chartOptions);

        // merge the options
        options = merge(chart.options.exporting, options);

        // create the form
        form = createElement('form', {
            method: 'post',
            action: options.url
        }, {
            display: NONE
        }, doc.body);

        // add the values
        each(['filename', 'type', 'width', 'svg'], function (name) {
            createElement('input', {
                type: HIDDEN,
                name: name,
                value: {
                    filename: options.filename || 'chart',
                    type: options.type,
                    width: options.width,
                    svg: svg
                }[name]
            }, null, form);
        });

        // submit
        form.submit();

        // clean up
        discardElement(form);
    },








Related