Javascript PDFKit:PNG的未知图像格式错误
我在浏览器中使用的是的预构建版本,当尝试添加PNG时,出现以下错误:Javascript PDFKit:PNG的未知图像格式错误,javascript,pdf,pdf-generation,pdfkit,node-pdfkit,Javascript,Pdf,Pdf Generation,Pdfkit,Node Pdfkit,我在浏览器中使用的是的预构建版本,当尝试添加PNG时,出现以下错误: Uncaught Error: Unknown image PDFImage.open format.util.js:546 module.exports.image deflate.js:773 img.onload PDFrenderer.j
Uncaught Error: Unknown image
PDFImage.open format.util.js:546
module.exports.image deflate.js:773
img.onload PDFrenderer.js:195
Uncaught TypeError: undefined is not a function
PDFImage.open util.js:535
module.exports.image deflate.js:773
我正在服务器上将图像转换为PNG(将它们裁剪成圆圈),服务器返回的图像的mime类型为“image/PNG”。我不确定将PNG转换为ArrayBuffer的方法是否不正确
下面是我用来获取PNG并将其转换为ArrayBuffer的代码:
var img = new Image, ctxData;
img.onError = function () {
throw new Error('Cannot load image: "' + url + '"');
}
img.onload = function () {
var canvas = document.createElement('canvas');
document.body.appendChild(canvas);
canvas.width = img.width;
canvas.height = img.height;
var ctx = canvas.getContext('2d');
ctx.drawImage(img, 0, 0);
ctxData = canvas.toDataURL('image/png').slice('data:image/png;base64,'.length);
ctxData = atob(ctxData);
document.body.removeChild(canvas);
var buffer = [];
for (var i = 0, l = ctxData.length; i < l; i++) {
buffer.push(ctxData.charCodeAt(i));
buffer._isBuffer = true;
buffer.readUInt16BE = function (offset, noAssert) {
var len = this.length;
if (offset >= len) return;
var val = this[offset] << 8;
if (offset + 1 < len)
l |= this[offset + 1];
return val;
}
}
pdf.image(buffer);
}
img.src = url;
到
但是我需要能够通过PNG,这样我就可以在任何背景上放置圆形图像
我还尝试传递完整的url(例如“”),但随后出现以下错误:
Uncaught Error: Unknown image
PDFImage.open format.util.js:546
module.exports.image deflate.js:773
img.onload PDFrenderer.js:195
Uncaught TypeError: undefined is not a function
PDFImage.open util.js:535
module.exports.image deflate.js:773
是否有人成功地通过浏览器将png添加到PDFkit中,如果是,您使用了什么方法?我找到了一个解决方案,只要确保您的png文件以大写字母结尾。png对我有效。这让我非常难过。我读到这篇文章时非常难过,认为他们出于某种原因确实签入了该文件,但事实并非如此。它正在检查数据。toString('ascii',1,4)是'PNG',其中数据实际上是文件内容,它正在检查头中的字符串PNG是否正确。