我使用网络服务将pdf转换为bitmap以在Arduino mini thermal printer上打印。
arduino BMP函数要求位图是uint8_t类型的数组。我可以将BMP降低为base64编码,所以我的问题是如何将base64字符串转换为等效类型uint8_t的数组?
let buffer = new Buffer(body, 'base64').toString('hex');
let array = [...buffer];
arr = arr.map(e => { return `0x${e.charCodeAt(0).toString(16)}`; });
我想尽可能多地卸载到服务器,以便arduino不必处理这个,所以我在响应中返回这个json:
let obj = {
width: img.width, // from cloudinary response (pdf to bmp)
height: img.height, // from cloudinary response (pdf to bmp)
data: arr
};
但整个回复都是无效的。我不太清楚我在这里做错了什么,但我认为这与我转换为base64,hex,然后将字符范围转换为十六进制有关。
更新 我相信我越来越近了:
let buffer = new Buffer(body, 'base64');
let arrBuffer = [...buffer];
let imgArray = new Uint8Array([...arrBuffer], 0, arrBuffer.length);
let hexArray = [];
for (data of imgArray.values()) { hexArray.push(data.toString(16)); }