莫里斯图形导出为PDF



我正在使用Morris.js创建图形。我有要求导出图形为pdf。我可以看到图形是svg元素。我该怎么做才能达到这个目的呢?

我拿了莫里斯的一个样品,给你做了一把小提琴:

http://jsfiddle.net/1roLdqte/48/

我添加了一个简单的调用,将现有的div格式化为PDF,只有morris图表:

$('#print').click(function () {
printMe();
});
function printMe() {
  xepOnline.Formatter.Format('line-example',{render:'download', srctype:'svg'});
 }

运行小提琴并按PDF按钮。

注意这里有更多可用的参数,你可以格式化更多的内容,而不仅仅是morris.js图表,控制页面大小,添加页眉/页脚等等。这只会将图表单独(srctype:'svg')格式化为PDF格式的矢量图像(不是光栅图像)。

可以。我尝试了morris.js v0.5.0和Raphael 2.1.2.

将此添加到您的图表(例如您的控制器):

$scope.pdf = function(chartName){
    printMorris(chartName);
};
function printMorris(chartName) {
    xepOnline.Formatter.Format(chartName, {render:'download', srctype:'svg'});
}

xepOnline.jqPlugin.008.js错误。要解决这个错误:"Uncaught TypeError: Cannot read property 'length' of null on xepOnline.jqPlugin.008.js:166",修改xepOnline.jqPlugin.008.js中的代码。

将此添加到第166行。当"rules"为空时,将跳过长度。

        if(rules === null)
            continue;

现在,xepOnline.jqPlugin.008.js:

中togglePrintMediaStyle函数中的代码
togglePrintMediaStyle: function() {
    if($('head style[data-xeponline-formatting]').length > 0) {
        $('head style[data-xeponline-formatting]').remove();
        return;
    }
    var printrules = [];
    for(var x=0;x<document.styleSheets.length;x++) { 
        var rules=document.styleSheets[x].cssRules;
        var rule=[];
        if(rules === null)
            continue;
        for(var x2=0;x2<rules.length;x2++) {
            if(rules[x2].media && rules[x2].media && (rules[x2].media[0] === 'print' || 
                rules[x2].media && rules[x2].media.mediaText === 'print')) {
                for(var x3=0;x3<rules[x2].cssRules.length; x3++) {
                    rule.push(rules[x2].cssRules[x3]);
                }
            }  else if (rules[x2].parentStyleSheet.media[0] && 
                    rules[x2].parentStyleSheet.media[0] === 'print' ||
                    (rules[x2].parentStyleSheet.media && 
                        rules[x2].parentStyleSheet.media.mediaText === 'print')) {
                rule.push(rules[x2]);
            }
        }
        for(var x2=0;x2<rule.length;x2++) {
            printrules.push(rule[x2].cssText);  
        }
    }
    // write print media styles to head
    var html = 'n<style type="text/css" data-xeponline-formatting="true">n';
    for(var x=0; x<printrules.length; x++) {
        html+='.xeponline-container ' + printrules[x] + 'n';
    }
    html += '</style>n';
    $('head').append(html);
},

相关内容

  • 没有找到相关文章

最新更新