【问题标题】:How to save pdf in proper encoding via nodejs如何通过nodejs以正确的编码保存pdf
【发布时间】:2015-09-11 10:47:59
【问题描述】:

所以我尝试使用我的脚本从网站下载 pdf 文件,但问题是文件在此过程中损坏,我很确定这是因为使用了错误的编码。

我正在使用请求库来下载文件,并且我已将 Content-type 设置为 application-pdf

我的代码很简单:4

var fs = require('fs');
var request = require("request");


request({uri: 'xxxxxxxxxxxxxx.pdf', headers: { 'Content-type' : 'applcation/pdf' }} , function (error, response, body) {
  if (!error && response.statusCode == 200) {
    fs.writeFileSync("10111.pdf", body);
  }
})

我需要在哪里指定用于此工作的编码?

我尝试打开通过正常保存获得的 pdf,SublimeText3 encodinghelper 说它在 Windows 中,而我下载的是 utf8。

我浏览了 nodejs 缓冲区和 fs 文件,它们不支持 windows-asd 之类的编码,只支持 'utf8' 和 'binary' 之类的一般编码。

我是否应该使用不同的方法来获取文件?

【问题讨论】:

  • 不是拼写错误? { '内容类型' : 'applcation/pdf' }

标签: node.js pdf encoding utf-8


【解决方案1】:

我知道它很晚,但我今天看到了你的问题,所以我正在回答它,以便其他人可以从中获得帮助。 您可以在尝试写入文件时添加编码,即:

fs.writeFileSync("10111.pdf", body,'binary');

我在这里将编码格式设置为二进制,如果您尝试下载可以将编码设置为 null 的 pdf,您可以根据自己的要求使用正确的编码格式。

希望这会有所帮助

【讨论】:

  • 为我解决的问题是在请求中添加encoding: null
  • @caravana_942 很酷,这就是我们开源开发者平台的魅力所在(y)
  • 除了 Zook 的评论之外,我还需要在 axios 请求中添加以下内容才能使其正常工作:responseType: 'arraybuffer', reponseEncoding: 'binary' 请参阅 stackoverflow.com/questions/40211246/encoding-issue-with-axios
  • 这不会创建有效的 .pdf 既不是“二进制”也不是“空”类型
猜你喜欢
  • 2014-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-30
  • 1970-01-01
  • 1970-01-01
  • 2013-01-07
相关资源
最近更新 更多