最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Adding Image to a PDF using jspdf makes the image black - Stack Overflow

programmeradmin1浏览0评论

When i try to add the image in the URL to a PDF file the image es pletley black.
But when I click the download pdf button again the image gets added to the PDF.Only when I do it the first time, the image es as black.

 function getBase64Image(url) {

alert(url);
var canvas = document.getElementById('myCanvas');
var context = canvas.getContext('2d');
var img = new Image();
img.src = url;
img.style.height ="181px";
img.style.width ="183px";
//img.crossOrigin ="Anonymous";

context.drawImage(img,0,0);

var dataURL = canvas.toDataURL("image/jpeg");
alert(dataURL);
document.body.appendChild(img);


var doc = new jsPDF('landscape');

doc.addImage(img,'JPEG',0,0,50,50);
doc.save('Saved.pdf');

 }

getBase64Image("http://localhost:64931/jspdf/download.png");

When i try to add the image in the URL to a PDF file the image es pletley black.
But when I click the download pdf button again the image gets added to the PDF.Only when I do it the first time, the image es as black.

 function getBase64Image(url) {

alert(url);
var canvas = document.getElementById('myCanvas');
var context = canvas.getContext('2d');
var img = new Image();
img.src = url;
img.style.height ="181px";
img.style.width ="183px";
//img.crossOrigin ="Anonymous";

context.drawImage(img,0,0);

var dataURL = canvas.toDataURL("image/jpeg");
alert(dataURL);
document.body.appendChild(img);


var doc = new jsPDF('landscape');

doc.addImage(img,'JPEG',0,0,50,50);
doc.save('Saved.pdf');

 }

getBase64Image("http://localhost:64931/jspdf/download.png");
Share Improve this question asked Dec 18, 2014 at 6:33 Shubh77Shubh77 1731 gold badge5 silver badges17 bronze badges
Add a ment  | 

2 Answers 2

Reset to default 2

What happens when you change your code like this:

A changed JPEG to PNG, that worked for me.

function getBase64Image(url) {

alert(url);
var canvas = document.getElementById('myCanvas');
var context = canvas.getContext('2d');
var img = new Image();
img.src = url;
img.style.height ="181px";
img.style.width ="183px";
//img.crossOrigin ="Anonymous";

context.drawImage(img,0,0);

var dataURL = canvas.toDataURL("image/png");
alert(dataURL);
document.body.appendChild(img);


var doc = new jsPDF('landscape');

doc.addImage(img,'PNG',0,0,50,50);
doc.save('Saved.pdf');

 }

getBase64Image("http://localhost:64931/jspdf/download.png");

I was facing the same issue yesterday, and writing this answer incase someone finds it useful

What I was trying to achieve?

  • I was converting the doc (pdf) into a blob and then opening it in a print dialogue, but the image was black.

    var blob = new Blob([doc.output()], { type: "application/pdf" });

This is how I was trying to convert it into a blob. but this resulted in a black image

Solution

  • jsPDF allows us to add arguments in the output function.

[](jsPDF output api)

adding type as bloburl works for me, as i was opening a print dialogue using the blob url

  let iframe = document.createElement("iframe"); //load content in an iframe to print later
    document.body.appendChild(iframe);

    //* print dialogue
    iframe.style.display = "none";
    iframe.src = blobURL;
    console.log(blobURL) // same blobURL that was received from jsPDF
    iframe.onload = function () {
      setTimeout(function () {
        iframe.focus();
        iframe.contentWindow.print(); // opens a print dialogue box
      }, 1);
    };
发布评论

评论列表(0)

  1. 暂无评论