2015-10-23 4 views

ответ

1

У меня возникла одна и та же проблема, и, к сожалению, для этой проблемы в ext пока нет обходного пути. Но в моем приложении я использовал html2canvas, чтобы загрузить диаграмму с легендами, заголовками и другими настраиваемыми спрайтами. html2canvas - бесплатное и легкое программное обеспечение.

Для браузеров, поддерживающих атрибут загрузки, вы можете использовать следующий код.

var chart = chartObj.down('chart'); 
html2canvas(chart.el.dom, { 
    onrendered: function(canvas) { 
    var myMsg = Ext.create('Ext.window.MessageBox', { 
     closeAction: 'destroy' 
    }); 
    myMsg.show({ 
     title: 'Confirm Download', 
     message: 'Would you like to download the chart as an image?',  
     icon: Ext.Msg.QUESTION, 
     buttons: Ext.Msg.YESNO, 
     closeAction: 'destroy', 
     height: 165, 
     width: 350 
    }); 
    var button = myMsg.query("button[text=Yes]")[0]; 
    button.el.dom.setAttribute("download", "Bar Chart.png"); 
    var dataURL = canvas.toDataURL('image/png'); 
    button.setHref(dataURL); 
    }, 
    height: chartObj.getHeight() + 500 
}); 

Для IE вы можете использовать код, как показано ниже.

Ext.Msg.confirm({ 
    title: 'Confirm Download', 
    message: 'Would you like to download the chart as an image?', 
    icon: Ext.Msg.QUESTION, 
    buttons: Ext.Msg.YESNO, 
    closeAction: 'destroy', 
    height: 165, 
    width: 350, 
    fn: function(btn) { 
    if (btn === 'yes') { 
     var chartObj = button.up('chart-container'); 
     html2canvas(chartObj.down('chart[hidden=false]').el.dom, { 
     onrendered: function(canvas) { 
      window.navigator.msSaveBlob(canvas.msToBlob(), 'Bar Chart.png'); 
     }, 
     height: chartObj.getHeight() + 500 
     }); 
    } 
    } 
}); 

См подробнее о html2canvas

+0

Спасибо за ответ! Я проверю это. – deliberateSnafu

Смежные вопросы