playtime
Posts: 1
Joined: Fri Aug 12, 2011 11:39 am

[Resolved]Multiple series export issues

Hi,

I have some troubles to export spline charts with multiple series.

Here is the exception :

Code: Select all

Converting fa08a44110ef0fcded6341c7c7d4bbf4.svg to /var/www/highchart_project/web/uploads/fa08a44110ef0fcded6341c7c7d4bbf4.png ... org.apache.batik.transcoder.TranscoderException: null
Enclosed Exception:
missing initial moveto in path definition
        at org.apache.batik.transcoder.image.ImageTranscoder.transcode(ImageTranscoder.java:132)
        at org.apache.batik.transcoder.XMLAbstractTranscoder.transcode(XMLAbstractTranscoder.java:142)
        at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(SVGAbstractTranscoder.java:156)
        at org.apache.batik.apps.rasterizer.SVGConverter.transcode(SVGConverter.java:1001)
        at org.apache.batik.apps.rasterizer.SVGConverter.execute(SVGConverter.java:717)
        at org.apache.batik.apps.rasterizer.Main.execute(Main.java:938)
        at org.apache.batik.apps.rasterizer.Main.main(Main.java:992)
... error (SVGConverter.error.while.rasterizing.file)
Note that i have no problem at all for charts with a single serie...
No problem either when i use the http://export.highcharts.com/ url.

This the PHP function used for the export :

Code: Select all

    public static function exportToFile($type, $svg, $width, $filename = 'chart') {
        
        $type_string = '';
        $ext = '';
        $temp_name = md5(rand());
        $result = array('file_name' => '', 'file_content' => '');
        
        if (get_magic_quotes_gpc())
            $svg = stripslashes($svg);	
                
        if ($type == 'image/png') {
            $type_string = '-m image/png';
            $ext = 'png';

        } elseif ($type == 'image/jpeg') {
            $type_string = '-m image/jpeg';
            $ext = 'jpg';

        } elseif ($type == 'application/pdf') {
            $type_string = '-m application/pdf';
            $ext = 'pdf';

        } elseif ($type == 'image/svg+xml') {
            $ext = 'svg';	
        }
        
        $outfile = sfConfig::get('sf_upload_dir')."/$temp_name.$ext";        
 
        if ($type_string == '')
            throw new Exception('Invalid file type.');

        // size
        if ($width != null) {
            $width = (int) $width;
            $width = "-w $width";
        }

        try {
            
            // generate the temporary file
            if (!file_put_contents(sfConfig::get('sf_upload_dir')."/$temp_name.svg", $svg))
                throw new Exception('Couldn\'t create temporary file. Check that the directory permissions for the /temp directory are set to 777.');
                
            // do the conversion
            $output = shell_exec("java -jar ". sfConfig::get('sf_lib_dir') ."/utils/batik/batik-rasterizer.jar $type_string -d $outfile $width ".sfConfig::get('sf_upload_dir')."/$temp_name.svg");

            // catch error
            if (!is_file($outfile) || filesize($outfile) < 20)
                throw new Exception('Error while converting SVG : '.$output);              
                
        } catch (Exception $exc) {

            unlink(sfConfig::get('sf_upload_dir')."/$temp_name.svg");
            unlink($outfile);  
            throw $exc;
        }             
              
        $result['file_content'] = file_get_contents($outfile);
        $result['file_name'] = $filename.'.'.$ext;
        
        // delete it
        unlink(sfConfig::get('sf_upload_dir')."/$temp_name.svg");
        unlink($outfile);      
        
        return $result;
    }
And the chart :

Code: Select all

chart_container = new Highcharts.Chart({
chart: {renderTo: 'container',zoomType: 'xy'},
title: {text: 'Nombre de comm. en succ├â┬¿s / ├â┬®chec'},
tooltip: {
    formatter: function(){
        var tooltip = ''+Highcharts.dateFormat('%A %e %B %Y %H:%M', this.x)+'<br />';
        tooltip += ''+this.series.name+' : ';
        tooltip += ''+this.y;
        return tooltip;
    }
},                
xAxis: {type: 'datetime', maxZoom: 3600000, dateTimeLabelFormats: {hour: '%e/%m %H:%M'}, labels: {rotation: 20}},
yAxis: [
    {title: {text: 'Nombre de comm.'}, maxZoom: 100, startOnTick: true, showFirstLabel: false},
    {gridLineWidth: 0, title: {text: '% comm. en succès', style: {color: '#89A54E'}}, min: 0, minPadding: 0, max: 100, maxPadding: 0, startOnTick: false, opposite: true},
],
legend: {enabled: true},
series: [{yAxis: 0, type: 'spline', name: 'Comm. en succ├â┬¿s', pointInterval: 900000, data: [[Date.UTC(2011, 7, 8, 0, 0), 42],[Date.UTC(2011, 7, 8, 0, 15), 35],[Date.UTC(2011, 7, 8, 0, 30), 37],[Date.UTC(2011, 7, 8, 0, 45), 20],[Date.UTC(2011, 7, 8, 1, 0), 38],[Date.UTC(2011, 7, 8, 1, 15), 30],[Date.UTC(2011, 7, 8, 1, 30), 29],[Date.UTC(2011, 7, 8, 1, 45), 26],[Date.UTC(2011, 7, 8, 2, 0), 53],[Date.UTC(2011, 7, 8, 2, 15), 70],[Date.UTC(2011, 7, 8, 2, 30), 82],[Date.UTC(2011, 7, 8, 2, 45), 97],[Date.UTC(2011, 7, 8, 3, 0), 104],[Date.UTC(2011, 7, 8, 3, 15), 82],[Date.UTC(2011, 7, 8, 3, 30), 81],[Date.UTC(2011, 7, 8, 3, 45), 47],[Date.UTC(2011, 7, 8, 4, 0), 30],[Date.UTC(2011, 7, 8, 4, 15), 28],[Date.UTC(2011, 7, 8, 4, 30), 37],[Date.UTC(2011, 7, 8, 4, 45), 26],[Date.UTC(2011, 7, 8, 5, 0), 48],[Date.UTC(2011, 7, 8, 5, 15), 25],[Date.UTC(2011, 7, 8, 5, 30), 52],[Date.UTC(2011, 7, 8, 5, 45), 57],[Date.UTC(2011, 7, 8, 6, 0), 79],[Date.UTC(2011, 7, 8, 6, 15), 66],[Date.UTC(2011, 7, 8, 6, 30), 106],[Date.UTC(2011, 7, 8, 6, 45), 105],[Date.UTC(2011, 7, 8, 7, 0), 171],[Date.UTC(2011, 7, 8, 7, 15), 217],[Date.UTC(2011, 7, 8, 7, 30), 326],[Date.UTC(2011, 7, 8, 7, 45), 390],[Date.UTC(2011, 7, 8, 8, 0), 725],[Date.UTC(2011, 7, 8, 8, 15), 955],[Date.UTC(2011, 7, 8, 8, 30), 1360],[Date.UTC(2011, 7, 8, 8, 45), 1716],[Date.UTC(2011, 7, 8, 9, 0), 2271],[Date.UTC(2011, 7, 8, 9, 15), 2423],[Date.UTC(2011, 7, 8, 9, 30), 2659],[Date.UTC(2011, 7, 8, 9, 45), 2894],[Date.UTC(2011, 7, 8, 10, 0), 3118],[Date.UTC(2011, 7, 8, 10, 15), 3150],[Date.UTC(2011, 7, 8, 10, 30), 3303],[Date.UTC(2011, 7, 8, 10, 45), 3354],[Date.UTC(2011, 7, 8, 11, 0), 3307],[Date.UTC(2011, 7, 8, 11, 15), 3396],[Date.UTC(2011, 7, 8, 11, 30), 3319],[Date.UTC(2011, 7, 8, 11, 45), 3195],[Date.UTC(2011, 7, 8, 12, 0), 2082],[Date.UTC(2011, 7, 8, 12, 15), 1427],[Date.UTC(2011, 7, 8, 12, 30), 1022],[Date.UTC(2011, 7, 8, 12, 45), 817],[Date.UTC(2011, 7, 8, 13, 0), 902],[Date.UTC(2011, 7, 8, 13, 15), 928],[Date.UTC(2011, 7, 8, 13, 30), 1351],[Date.UTC(2011, 7, 8, 13, 45), 1841],[Date.UTC(2011, 7, 8, 14, 0), 2901],[Date.UTC(2011, 7, 8, 14, 15), 3163],[Date.UTC(2011, 7, 8, 14, 30), 3285],[Date.UTC(2011, 7, 8, 14, 45), 3328],[Date.UTC(2011, 7, 8, 15, 0), 3095],[Date.UTC(2011, 7, 8, 15, 15), 3148],[Date.UTC(2011, 7, 8, 15, 30), 1899]]},{yAxis: 0, type: 'spline', name: 'Comm. en ├â┬®chec', pointInterval: 900000, data: [[Date.UTC(2011, 7, 8, 0, 0), 52],[Date.UTC(2011, 7, 8, 0, 15), 47],[Date.UTC(2011, 7, 8, 0, 30), 39],[Date.UTC(2011, 7, 8, 0, 45), 48],[Date.UTC(2011, 7, 8, 1, 0), 47],[Date.UTC(2011, 7, 8, 1, 15), 43],[Date.UTC(2011, 7, 8, 1, 30), 47],[Date.UTC(2011, 7, 8, 1, 45), 48],[Date.UTC(2011, 7, 8, 2, 0), 52],[Date.UTC(2011, 7, 8, 2, 15), 46],[Date.UTC(2011, 7, 8, 2, 30), 55],[Date.UTC(2011, 7, 8, 2, 45), 58],[Date.UTC(2011, 7, 8, 3, 0), 53],[Date.UTC(2011, 7, 8, 3, 15), 52],[Date.UTC(2011, 7, 8, 3, 30), 57],[Date.UTC(2011, 7, 8, 3, 45), 47],[Date.UTC(2011, 7, 8, 4, 0), 45],[Date.UTC(2011, 7, 8, 4, 15), 40],[Date.UTC(2011, 7, 8, 4, 30), 35],[Date.UTC(2011, 7, 8, 4, 45), 39],[Date.UTC(2011, 7, 8, 5, 0), 44],[Date.UTC(2011, 7, 8, 5, 15), 39],[Date.UTC(2011, 7, 8, 5, 30), 46],[Date.UTC(2011, 7, 8, 5, 45), 43],[Date.UTC(2011, 7, 8, 6, 0), 54],[Date.UTC(2011, 7, 8, 6, 15), 57],[Date.UTC(2011, 7, 8, 6, 30), 48],[Date.UTC(2011, 7, 8, 6, 45), 49],[Date.UTC(2011, 7, 8, 7, 0), 55],[Date.UTC(2011, 7, 8, 7, 15), 61],[Date.UTC(2011, 7, 8, 7, 30), 91],[Date.UTC(2011, 7, 8, 7, 45), 88],[Date.UTC(2011, 7, 8, 8, 0), 130],[Date.UTC(2011, 7, 8, 8, 15), 130],[Date.UTC(2011, 7, 8, 8, 30), 190],[Date.UTC(2011, 7, 8, 8, 45), 258],[Date.UTC(2011, 7, 8, 9, 0), 293],[Date.UTC(2011, 7, 8, 9, 15), 304],[Date.UTC(2011, 7, 8, 9, 30), 328],[Date.UTC(2011, 7, 8, 9, 45), 383],[Date.UTC(2011, 7, 8, 10, 0), 402],[Date.UTC(2011, 7, 8, 10, 15), 388],[Date.UTC(2011, 7, 8, 10, 30), 391],[Date.UTC(2011, 7, 8, 10, 45), 455],[Date.UTC(2011, 7, 8, 11, 0), 394],[Date.UTC(2011, 7, 8, 11, 15), 438],[Date.UTC(2011, 7, 8, 11, 30), 394],[Date.UTC(2011, 7, 8, 11, 45), 406],[Date.UTC(2011, 7, 8, 12, 0), 235],[Date.UTC(2011, 7, 8, 12, 15), 284],[Date.UTC(2011, 7, 8, 12, 30), 176],[Date.UTC(2011, 7, 8, 12, 45), 157],[Date.UTC(2011, 7, 8, 13, 0), 176],[Date.UTC(2011, 7, 8, 13, 15), 162],[Date.UTC(2011, 7, 8, 13, 30), 186],[Date.UTC(2011, 7, 8, 13, 45), 233],[Date.UTC(2011, 7, 8, 14, 0), 327],[Date.UTC(2011, 7, 8, 14, 15), 431],[Date.UTC(2011, 7, 8, 14, 30), 384],[Date.UTC(2011, 7, 8, 14, 45), 404],[Date.UTC(2011, 7, 8, 15, 0), 410],[Date.UTC(2011, 7, 8, 15, 15), 447],[Date.UTC(2011, 7, 8, 15, 30), 287]]},{dashStyle: 'shortdot', marker: {enabled: false}, yAxis: 1, type: 'spline', name: '% comm. en succ├â┬¿s', pointInterval: 900000, data: [[Date.UTC(2011, 7, 08, 00, 00), 44],[Date.UTC(2011, 7, 08, 00, 15), 42],[Date.UTC(2011, 7, 08, 00, 30), 48],[Date.UTC(2011, 7, 08, 00, 45), 29],[Date.UTC(2011, 7, 08, 01, 00), 44],[Date.UTC(2011, 7, 08, 01, 15), 41],[Date.UTC(2011, 7, 08, 01, 30), 38],[Date.UTC(2011, 7, 08, 01, 45), 35],[Date.UTC(2011, 7, 08, 02, 00), 50],[Date.UTC(2011, 7, 08, 02, 15), 60],[Date.UTC(2011, 7, 08, 02, 30), 59],[Date.UTC(2011, 7, 08, 02, 45), 62],[Date.UTC(2011, 7, 08, 03, 00), 66],[Date.UTC(2011, 7, 08, 03, 15), 61],[Date.UTC(2011, 7, 08, 03, 30), 58],[Date.UTC(2011, 7, 08, 03, 45), 50],[Date.UTC(2011, 7, 08, 04, 00), 40],[Date.UTC(2011, 7, 08, 04, 15), 41],[Date.UTC(2011, 7, 08, 04, 30), 51],[Date.UTC(2011, 7, 08, 04, 45), 40],[Date.UTC(2011, 7, 08, 05, 00), 52],[Date.UTC(2011, 7, 08, 05, 15), 39],[Date.UTC(2011, 7, 08, 05, 30), 53],[Date.UTC(2011, 7, 08, 05, 45), 57],[Date.UTC(2011, 7, 08, 06, 00), 59],[Date.UTC(2011, 7, 08, 06, 15), 53],[Date.UTC(2011, 7, 08, 06, 30), 68],[Date.UTC(2011, 7, 08, 06, 45), 68],[Date.UTC(2011, 7, 08, 07, 00), 75],[Date.UTC(2011, 7, 08, 07, 15), 78],[Date.UTC(2011, 7, 08, 07, 30), 78],[Date.UTC(2011, 7, 08, 07, 45), 81],[Date.UTC(2011, 7, 08, 08, 00), 84],[Date.UTC(2011, 7, 08, 08, 15), 88],[Date.UTC(2011, 7, 08, 08, 30), 87],[Date.UTC(2011, 7, 08, 08, 45), 86],[Date.UTC(2011, 7, 08, 09, 00), 88],[Date.UTC(2011, 7, 08, 09, 15), 88],[Date.UTC(2011, 7, 08, 09, 30), 89],[Date.UTC(2011, 7, 08, 09, 45), 88],[Date.UTC(2011, 7, 08, 10, 00), 88],[Date.UTC(2011, 7, 08, 10, 15), 89],[Date.UTC(2011, 7, 08, 10, 30), 89],[Date.UTC(2011, 7, 08, 10, 45), 88],[Date.UTC(2011, 7, 08, 11, 00), 89],[Date.UTC(2011, 7, 08, 11, 15), 88],[Date.UTC(2011, 7, 08, 11, 30), 89],[Date.UTC(2011, 7, 08, 11, 45), 88],[Date.UTC(2011, 7, 08, 12, 00), 89],[Date.UTC(2011, 7, 08, 12, 15), 83],[Date.UTC(2011, 7, 08, 12, 30), 85],[Date.UTC(2011, 7, 08, 12, 45), 83],[Date.UTC(2011, 7, 08, 13, 00), 83],[Date.UTC(2011, 7, 08, 13, 15), 85],[Date.UTC(2011, 7, 08, 13, 30), 87],[Date.UTC(2011, 7, 08, 13, 45), 88],[Date.UTC(2011, 7, 08, 14, 00), 89],[Date.UTC(2011, 7, 08, 14, 15), 88],[Date.UTC(2011, 7, 08, 14, 30), 89],[Date.UTC(2011, 7, 08, 14, 45), 89],[Date.UTC(2011, 7, 08, 15, 00), 88],[Date.UTC(2011, 7, 08, 15, 15), 87],[Date.UTC(2011, 7, 08, 15, 30), 86]]}],
plotOptions: {
    series: {
        marker: {radius: 0},
        cursor: 'pointer',
        point: {
            events: {
                click: function() {

                    var form_serialized = $('#indicator-form').serialize();
                    
                    form_serialized += '&indicator%5Bdate_selected%5D='+Highcharts.dateFormat('%Y-%m-%d+%H%3A%M%3A%S', this.x);
                    form_serialized += '&indicator%5Bserie_name%5D='+this.series.name;

                    $('#export-dialog').dialog({
                        resizable: false,
                        height: 120,
                        modal: true,
                        buttons: {
                            Exporter: function() {
                                $(this).dialog('close');
                                $(document).attr('location', '/web/frontend_dev.php/Export.csv'+'?'+form_serialized);
                            },
                            Annuler: function() {
                                $(this).dialog('close');
                            }
                        }              
                    });  
                }
            }
        }
    }
}                
});
I'm using batik 1.7 with a Java version 1.6 (open JDK).

EDIT :
Working on Firefox and IE but not with Chrome...!!

EDIT 2:
That was because of the open JDK. I've changed it for a classic Sun Java and it's working.

Return to “Highcharts Usage”