javascript - 使用 jspdf 将图像 url 转换为 pdf

标签 javascript html google-chrome-extension pdf-generation jspdf

function convertImgToBase64(url)
{
    var canvas = document.createElement('canvas');
    var ctx = canvas.getContext('2d');
    img = document.createElement('img'),
    img.src = url;
    canvas.height = img.height;
    canvas.width = img.width;
    var dataURL = canvas.toDataURL('image/jpeg')
    alert(dataURL);
    canvas = null; 
    return dataURL;
  }

var imageurl = 'http://qph.is.quoracdn.net/main-qimg-ca033a73e2ea858908c44905d4c25f4b?convert_to_webp=true';
var som =convertImgToBase64(imageurl);
doc.addImage(som, 'JPEG', 15, 40, 180, 180);
doc.output('datauristring');

但是没有任何反应 没有生成 pdf 文件?我在警告框中获得了正确的 base64 代码,但未生成图像?

最佳答案

这是我对同一问题的解决方案。

let logo = null;

getDataUri(imgUrl, function(dataUri) {
    logo = dataUri;
    console.log("logo=" + logo);
});

function getDataUri(url, cb)
 {
        var image = new Image();
        image.setAttribute('crossOrigin', 'anonymous'); //getting images from external domain

        image.onload = function () {
            var canvas = document.createElement('canvas');
            canvas.width = this.naturalWidth;
            canvas.height = this.naturalHeight; 

            //next three lines for white background in case png has a transparent background
            var ctx = canvas.getContext('2d');
            ctx.fillStyle = '#fff';  /// set white fill style
            ctx.fillRect(0, 0, canvas.width, canvas.height);

            canvas.getContext('2d').drawImage(this, 0, 0);

            cb(canvas.toDataURL('image/jpeg'));
        };

        image.src = url;
   }

然后生成pdf

    var doc = new jsPDF();

    let left = 15;
    let top = 8;
    const imgWidth = 100;
    const imgHeight = 100;

    doc.addImage(logo, 'PNG', left, top, imgWidth, imgHeight);

    doc.output('dataurlnewwindow'); //opens pdf in new tab

关于javascript - 使用 jspdf 将图像 url 转换为 pdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24912021/

相关文章:

javascript - 这个 JavaScript 语句如何计算日期?

javascript - 如何将 <span> 标记插入从 XML 提要生成的文本字符串的中间?

html - 表格布局全乱了

google-chrome - 如何在隐身模式下启用Chrome扩展程序?

javascript - 使用 Chrome 扩展中的 prompt() 函数来询问密码是否安全?

html - 使用 group 属性将 CSS 应用于 li

javascript - 在 JavaScript 中隐藏/禁用关闭图标

javascript - AngularJs location.path 不传递参数

javascript - 适用于 obj 和数组的函数 - JS

javascript - AddToAny 在 FireFox 中不起作用