以pdf格式写入字节

问题描述 投票:1回答:1

我正在以字节的形式获取API的响应。

let a = "JSHDHHFHFHHFKFLLFLDMDMDMDMMSKKW==";

我想将此写入pdf文件。到目前为止,我采用的方法是使用atob库将其转换为二进制文件。然后,将其转换为Uint8Array并使用fs.writestream写入文件。文件写入完成后,将为我提供未定义类型的输出。

%
1 0 obj
<</Filter/FlateDecode/First 141/N 20/Length 848/Type/ObjStm>>
stream
xUmoâ8þ+óm[U½ø%/ÎiU  ÈÂr]º¸ë¢|ð/)`©ý÷7ã´vK·HQ2gÆÏ3À@)ÀcHBd@*P§¤ Î U8GC8q3È_C¦x¦¤øU8Oà3$c¨*Æ/æK?óÝ7÷¸5Á`
íÆ-Ð4?¶Î¬Çï²3Ù=0YØÑ8èm0.ÍÆUî1  ¢ý+3í²©¶Î6"ûº5~º?½»®Fzçôºº¹!ÙO>=¸ÑÜigºù÷¼ÏyDqÇIè?*Ê¥J!âB)ÿ§ ½àøÌÝDÇþ{;ü2¹ê5®¯û¶.'1Í«ÚÊZã@$~4GØÿda0vº®½Íª6H-­àZ&Lo?jõÃáÁIÐ림=¬õªñ+¿T¿oòë³S$±Þ±ð³wzm^ú²ÍNϨJ[Bß6iEði³´eµYíi»þ|@ÜÂþ½©ÐÁx/iãt©ÑÕÌT¯LKNy³µ]½dzHÞÈì¿ì¯Á¢ùï2Ta°<b¬HDNµ¤¹êþø2Äz=WTâ÷hg õr¡æQîI²2xj;÷æÁe[|Ó à±¦#b\:IEÌ,ékvª_]ØÌ´v×,Mû$êCô¯hêgþp»DEäÁ4óàµ#Å¡v$§vDx¤y yR;qè#Q;ByÇíÓ{Z6»£UÛªlsλ
ÜÙ>5»[pÍÎ_§tíO;Û¬u}¢ñm·µYv|mJÓ`)_<×Ç%²½ªZ×<^ôJûÍ\þÒ{£Þð'"u?ÅÅ!\{þÈ~?âEF¡xàBxÏþigX]¿quu&^/ú¶ìŽIüþvZj<§A_½ñ¾ëº5¯ÖÄ.²?ãsÁY_1ñ±Á 1ÚUvó¶
£Ü-Ms1~ÑÛº#Hÿìr$ö¤ÿ²}R
endstream
endobj
22 0 obj```

When I am trying the response on online editor it gives me the write response.

The code I have used till now.

let encodedPDF = JSON.parse(d).Resp_Policy_Document.PDF_BYTES;
var bin = atob(encodedPDF);
var binaryLen = bin.length;
var bytes = new Uint8Array(binaryLen);
for (var i = 0; i < binaryLen; i++) 
{
var ascii = bin.charCodeAt(i);
bytes[i] = ascii;
}
let writer=fs.createWriteStream('Last.pdf');
writer.write(bin);
node.js stream fs
1个回答
0
投票

您获得的数据是Base64 encoded。这是API传递信息的一种非常普遍的方式。赠品?末尾的等号,以及使用ASCII大写和小写字母,数字,+/

因此,您需要以这种方式对其进行解码。使用类似这样的内容

const pdfBinary = Buffer.from(a, 'base64');  

我想这个缓冲区的内容是pdf文档。您应将其直接写到文件中,而不要尝试将其转换为文本字符串。

© www.soinside.com 2019 - 2024. All rights reserved.