簡體   English   中英

使用 JSPDF 將畫布圖表導出為 PDF

[英]Export Canvas Chart to PDF using 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; 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');
    }

行和徽標圖像以 PDF 格式正確導出。 但是“canvasImg”並不是即將到來的空白。 “canvasImg”的控制台輸出:

數據:圖像/png;base64,iVBORw0KGgoAAAANSUhEUgAABQkAAAG2CAYAAADcLQBGAAAgAElEQVR4Xu3YQREAAAjDMObfNEIaHJDbqztHgAABAgQIECBAgAABAgQIECBAgEBaYnvPU+......

期待建議和幫助。

通過更改一些代碼解決了它:

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');
}

將畫布圖形代碼放在 addImage() 正上方並完美運行:

var canvas = document.getElementById('graph');
var canvasImg = canvas.toDataURL();
doc.addImage(canvasImg, 'PNG', 5, 20, width-20, 70);

謝謝你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM