#javascript
#javascript
Вопрос:
Я пытаюсь создать PDF с изображением. У меня есть URL изображения, как показано ниже:
var url = «https://firebasestorage.googleapis.com/v0/b/dicom-poc.appspot.com/o/images/NiouCzjBYna8Wx1VO2x3UST5tDc2/2020-10-07/05:03:58/visualization/L-CC.png?alt=mediaamp;token=dce8859a-3427-432b-8176-590e9569aad9»
и мой код здесь:
var pdf = new jsPDF();
var img = new Image();
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
img = document.createElement('img');
img.src = url;
img.onload = function(){
canvas.height = img.height;
canvas.width = img.width;
var dataURL = canvas.toDataURL('image/png')
var base64 = dataURL.replace(/^data:. ;base64,/, '');
pdf.text("Hi");
pdf.addImage(base64,'PNG',5,5,50,50);
pdf.save("download.pdf");
}
После выполнения приведенного выше кода PDF успешно загружается с текстом «Привет», но изображения там нет.
Я пробовал несколько решений, предложенных людьми, но безрезультатно.
Не могли бы вы помочь мне сделать то же самое.
Заранее спасибо!
Ответ №1:
Вы ничего не рисовали на холсте.
var pdf = new jsPDF();
var img = new Image();
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
img = document.createElement('img');
img.src = url;
img.onload = function(){
canvas.height = img.height;
canvas.width = img.width;
ctx.drawImage(img, img.width, img.width);
var dataURL = canvas.toDataURL('image/png')
var base64 = dataURL.replace(/^data:. ;base64,/, '');
pdf.text("Hi");
pdf.addImage(base64,'PNG',5,5,50,50);
pdf.save("download.pdf");
}
Комментарии:
1. Я добавил «ctx.drawImage (img, img.width, img.width);» для рисования на холсте, но это вызвало ошибку: ** SecurityError: не удалось выполнить ‘toDataURL’ на ‘HTMLCanvasElement’: испорченные холсты не могут быть экспортированы. ** . Чтобы устранить эту ошибку, я добавил img.setAttribute(‘crossorigin’, ‘Anonymous’); но все равно он сохраняется. Пожалуйста, помогите мне.
2. Вы поместили его перед установкой img.src?
3. Привет, большое тебе спасибо, Муса. Ты крут! Вы решили мою проблему.