在Node js后端从http请求中读取多部分pdf



我使用Node.js运行后端脚本,使用axios执行和http请求。http请求返回一个我想保存在文件系统中的pdf。然而,当我尝试这样做时(在blob上使用fs.writeFile), pdf以某种方式格式化错误,以至于当我打开它时,它只是给出空白页。我已经研究了多部分mime对象和其他可能发生的事情,但我找不到任何描述如何解析这些数据并保存在后端脚本上的内容。

对于文件的格式,它从%pdf-1.3 1 0 obj <<开始,然后有一堆/HideToolbar: false形式的头,然后有>> endobj,然后过了一段时间有一个宽度数组和一个很长的流,大概是base-64编码的字符。

%PDF-1.3
1 0 obj
<<
/Type /Catalog
/Pages 4 0 R
/Outlines 2 0 R
/PageMode /UseNone
/ViewerPreferences <<
/HideToolbar false
/HideMenubar false
/HideWindowUI false
/FitWindow false
/CenterWindow false
/DisplayDocTitle false
>>
>>
endobj
2 0 obj
<<
/Type /Outlines
/Count 2 /First 26 0 R /Last 27 0 R
>>
endobj
3 0 obj
[/PDF /Text /ImageC]
endobj
4 0 obj
<<
/Type /Pages
/Count 2
/Kids [14 0 R 18 0 R ]
>>
endobj
5 0 obj
<<
/Type /Font
/Subtype /TrueType
/Name /F1
/BaseFont /DDACTR+MicrosoftSansSerif
/FirstChar 30
/LastChar 255
/Widths [
0 0 265 277 354 556 556 889
666 190 333 333 389 583 277 333
277 277 556 556 556 556 556 556
556 556 556 556 277 277 583 583
583 556 1015 666 666 722 722 666
610 777 722 277 500 666 556 833
722 777 666 777 722 666 610 722
666 943 666 666 610 277 277 277
469 551 333 556 556 500 556 556
277 556 556 228 228 500 228 833
556 556 556 556 333 500 277 556
500 722 500 500 500 333 259 333
583 0 556 0 277 556 391 565
556 556 333 1000 666 333 1000 0
610 0 0 222 222 333 333 350
292 585 333 683 500 333 943 0
500 666 265 277 556 556 556 556
259 556 333 736 370 556 583 0
736 500 399 583 333 333 333 556
537 277 333 333 365 556 833 833
833 556 666 666 666 666 666 666
1000 722 666 666 666 666 277 277
277 277 722 722 777 777 777 777
777 583 777 722 722 722 722 666
666 610 556 556 556 556 556 556
889 500 556 556 556 556 228 228
228 228 556 556 556 556 556 556
556 583 556 556 556 556 556 500
556 500  ]
/Encoding /WinAnsiEncoding
/FontDescriptor 6 0 R
>>
endobj
6 0 obj
<<
/Type /FontDescriptor
/FontName /DDACTR+MicrosoftSansSerif
/Flags 32
/FontBBox [ -580 -257 1473 1003 ]
/ItalicAngle 0
/CapHeight 500
/Ascent 728
/Descent -210
/StemV 0
/XHeight 519
/FontFile2 7 0 R
>>
endobj
7 0 obj
<< /Filter /FlateDecode /Length 15837 /Length1 45884 >>
stream
x���y`TE�7|����[�鄬4!    M

,它继续使用一段时间不可读的字符,然后整个格式再次重复。有人知道怎么把它读成pdf吗?

试着用这个代替

axios({
method: "get",
url: "YOUR_URL_HERE",
responseType: "stream"
}).then(function (response) {
response.data.pipe(fs.createWriteStream("my.pdf"));
});

如果这个不工作,这意味着你要下载的pdf是损坏的/旧的

相关内容

  • 没有找到相关文章

最新更新