Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用JSPDF将画布图表导出为PDF_Javascript_Pdf_Canvas_Jspdf - Fatal编程技术网

Javascript 使用JSPDF将画布图表导出为PDF

Javascript 使用JSPDF将画布图表导出为PDF,javascript,pdf,canvas,jspdf,Javascript,Pdf,Canvas,Jspdf,我使用jspdf导出画布图表和PDF格式的相关数据。我能够正确获取数据,但无法获取PDF格式的图表图像。下面是我的代码: var doc = new jsPDF(); var canvas = document.getElementById('graph'); var canvasImg = canvas.toDataURL(); console.log(canvasImg); var rows = []; for (var i = 0

我使用jspdf导出画布图表和PDF格式的相关数据。我能够正确获取数据,但无法获取PDF格式的图表图像。下面是我的代码:

    var doc = new jsPDF();
    
    var canvas = document.getElementById('graph');
    var canvasImg = canvas.toDataURL();
    console.log(canvasImg);

    var rows = [];
    for (var i = 0; i < dataFFTvalues.length; ++i) {
        for (var j = 0; j < dataFFTvalues[i].length; ++j) {
            dataFFTvalues[i][j] = dataFFTvalues[i][j];
        }
        rows.push(dataFFTvalues[i]); //.join(',')
    }

    var img = new Image();
    img.src = 'http://domainname.com/portal/img/logo.png';

    img.onload = function(){
        doc.setFontSize(15);
        doc.addImage(img, 'PNG', 160, 5, 40 , 18);
        doc.text(90, 20, "Report");
        doc.setFontSize(10);
        doc.text(15, 40, "Below are the metric details : ");

        doc.autoTable(columns, rows, {startY: 85}); 
        doc.addPage();
        doc.internal.scaleFactor = 1.8;
        var width = doc.internal.pageSize.width;     
        doc.addImage(canvasImg, 'PNG', 5, 20, width-20, 70);
        doc.save('FFTcanvas.pdf');
    }
var doc=new jsPDF();
var canvas=document.getElementById('graph');
var canvasImg=canvas.toDataURL();
控制台日志(canvasImg);
var行=[];
对于(变量i=0;i
行和徽标图像以PDF格式正确导出。但“拉票”并不是一片空白。“canvasImg”的控制台输出:

数据:图像/png;base64,IVBORW0KGGG0KGG0KG0KG0KG0KG0KG0KG0KG0K0KG0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0K0第四节,在第四节中,我们可以用一个简单的例子来说明这个问题asxgfgfqiecbaggqiaaqiecbaggqiaaqiaoq0qiecaaecbaggqiecaaecbaggqiaihpeb


期待您的建议和帮助。

通过更改某些代码解决了此问题:

var doc = new jsPDF();

var rows = [];
for (var i = 0; i < dataFFTvalues.length; ++i) {
    for (var j = 0; j < dataFFTvalues[i].length; ++j) {
        dataFFTvalues[i][j] = dataFFTvalues[i][j];
    }
    rows.push(dataFFTvalues[i]); //.join(',')
}

var img = new Image();
img.src = 'http://domainname.com/portal/img/logo.png';

img.onload = function(){
    doc.setFontSize(15);
    doc.addImage(img, 'PNG', 160, 5, 40 , 18);
    doc.text(90, 20, "Report");
    doc.setFontSize(10);
    doc.text(15, 40, "Below are the metric details : ");

    doc.autoTable(columns, rows, {startY: 85}); 
    doc.addPage();
    doc.internal.scaleFactor = 1.8;
    var width = doc.internal.pageSize.width;   

    var canvas = document.getElementById('graph');
    var canvasImg = canvas.toDataURL();

    doc.addImage(canvasImg, 'PNG', 5, 20, width-20, 70);
    doc.save('FFTcanvas.pdf');
}

谢谢。

您是否尝试过将引用传递给
-元素而不是base64编码的字符串?根据文件,这是可能的:我解决了。我将canvasImg代码放在addImage语法的正上方。
var canvas = document.getElementById('graph');
var canvasImg = canvas.toDataURL();
doc.addImage(canvasImg, 'PNG', 5, 20, width-20, 70);