使用jspdf以pdf格式添加图像

Nav*_*vya 21 javascript jquery image jspdf

我正在使用jspdf将图像转换为PDF.

我已使用base64encode将图像转换为URI.但问题是控制台中没有显示错误或警告.

生成带有文本Hello World的PDF但不添加任何图像.

这是我的代码.

function convert(){
        var doc = new jsPDF();
        var imgData = 'data:image/jpeg;base64,'+ Base64.encode('Koala.jpeg');
        console.log(imgData);
        doc.setFontSize(40);
        doc.text(30, 20, 'Hello world!');
        doc.output('datauri');
        doc.addImage(imgData, 'JPEG', 15, 40, 180, 160);

    }
Run Code Online (Sandbox Code Playgroud)

Leo*_*jer 15

虽然我不确定,但是在添加图像之前创建输出可能不会添加图像.尝试:

function convert(){
    var doc = new jsPDF();
    var imgData = 'data:image/jpeg;base64,'+ Base64.encode('Koala.jpeg');
    console.log(imgData);
    doc.setFontSize(40);
    doc.text(30, 20, 'Hello world!');
    doc.addImage(imgData, 'JPEG', 15, 40, 180, 160);
    doc.output('datauri');
}
Run Code Online (Sandbox Code Playgroud)

  • @ Grez.Kev它已经有一段时间了,但如果我没记错的话:addImage(图像,格式,xPosition,yPosition,width,height).我希望这有帮助! (3认同)
  • 它是`addImage(imageData,image,format,x,y,width,height,alias,compression,rotation)`。阅读https://rawgit.com/MrRio/jsPDF/master/docs/module-addImage.html (2认同)

小智 13

也许有点晚了,但我最近遇到这种情况并找到了一个简单的解决方案,需要2个功能.

  1. 加载图像.

    function getImgFromUrl(logo_url, callback) {
        var img = new Image();
        img.src = logo_url;
        img.onload = function () {
            callback(img);
        };
    } 
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在第一步的onload事件中,进行回调以使用jspdf doc.

    function generatePDF(img){
        var options = {orientation: 'p', unit: 'mm', format: custom};
        var doc = new jsPDF(options);
        doc.addImage(img, 'JPEG', 0, 0, 100, 50);}
    
    Run Code Online (Sandbox Code Playgroud)
  3. 使用上述功能.

    var logo_url = "/images/logo.jpg";
    getImgFromUrl(logo_url, function (img) {
        generatePDF(img);
    });
    
    Run Code Online (Sandbox Code Playgroud)


ati*_*tik 8

这在Angular 2中对我有用

var img = new Image()
img.src = 'assets/sample.png'
pdf.addImage(img, 'png', 10, 78, 12, 15)
Run Code Online (Sandbox Code Playgroud)

jsPDF版本1.5.3

资产目录位于Angular项目根目录的src目录中

  • 在指定扩展名时对我也不起作用。处理程序:“错误:PNG 文件不完整或损坏” (2认同)

小智 7

你定义了Base64?如果未定义,则会出现此错误:

ReferenceError:未定义Base64


Abh*_*nha 7

无需添加任何额外的base64库。简单的5线解决方案-

var img = new Image();
img.src = path.resolve('sample.jpg');

var doc = new jsPDF('p', 'mm', 'a3');  // optional parameters
doc.addImage(img, 'PNG', 1, 2);
doc.save("new.pdf");
Run Code Online (Sandbox Code Playgroud)

  • path.resolve()来自哪里? (3认同)
  • path.resolve是Node JS的东西。它基本上可以找出相对于文件的正确文件路径。如果您不想使用它,可以提供文件源(/something/something/myfile.jpg)而不是path.resolve() (3认同)