图片和PDF制作

Ed *_* Wu 3 javascript image pdfmake

我目前正在使用pdfmake生成项目报告pdf的给定信息,但在获取图像显示时遇到了一些麻烦。

我有一个生成pdfmake“ object”的函数,如下所示:

function singleProject(data) {
    return {
        text: "Project: \n" + data.title + \n\nImage: \n",
        pageBreak: 'before'
    }
}
Run Code Online (Sandbox Code Playgroud)

我想在给定图像URL的情况下向该报告中添加图像(类似“ images / sample_image.jpg”),根据我在其他答案中所读的内容,我必须将其转换为base 64格式。

在另一个答案中提供了这些功能之一,但我不太清楚如何使用它:

function convertImgToBase64URL(url, callback, outputFormat){
    var canvas = document.createElement('CANVAS'),
        ctx = canvas.getContext('2d'),
        img = new Image;
    img.crossOrigin = 'Anonymous';
    img.onload = function(){
        var dataURL;
        canvas.height = img.height;
        canvas.width = img.width;
        ctx.drawImage(img, 0, 0);
        dataURL = canvas.toDataURL(outputFormat);
        callback(dataURL);
        canvas = null;
    };
    img.src = url;
}
Run Code Online (Sandbox Code Playgroud)

但是,我不太清楚该如何使用该函数将图像添加到所提供的第一个函数中,因为它不会返回dataURL。如果我尝试类似:

function singleProject(data) {
    return {
        text: "Project: \n" + data.title + \n\nImage: \n",
        image: convertImgToBase64URL(data.image), //data.image is the URL so something like "images/sample_image.jpg"
        width: 300,
        pageBreak: 'before'
    }
}
Run Code Online (Sandbox Code Playgroud)

图像不显示。

小智 5

使用隐藏

<img id='imgToExport' src='someimageurl' style='display:none'/> 
Run Code Online (Sandbox Code Playgroud)

并在JavaScript中使用

var imgToExport = document.getElementById('imgToExport');
var canvas = document.createElement('canvas');
        canvas.width = imgToExport.width; 
        canvas.height = imgToExport.height; 
        canvas.getContext('2d').drawImage(imgToExport, 0, 0);
  canvas.toDataURL('image/png')
Run Code Online (Sandbox Code Playgroud)

通过这种方式,您不需要异步调用